微软.Net Core 3.0 预览版 7 发布:大幅减少 SDK 空间大小

这个预览版是 .Net Core 3 中重要的版本,可以视为原计划在 7 月发布的 RC 版本 (引自微软 .NET Core 首席 Program Manager Richard 先生原话),故可在生产环境进行开发和部署。

据悉,这个预览版是 .Net Core 3 中重要的版本,可以视为原计划在 7 月发布的 RC 版本 (引自微软 .NET Core 首席 Program Manager Richard 先生原话),故可在生产环境进行开发和部署。 Windows, macOS 和 Linux 版本的Download .NET Core 3.0 预览版 7 下载地址如下: 与此同时,ASP.NET Core 和EF Core 实体框架 也同于同一天发布。 针对 .NET Core 3.0 预览版 7 的新特性,Visual Studio 用户需要在 Visual Studio 2019 16.3 预览 1 中使用。 Microsoft .NET 站点已更新为.NET Core 3.0 预览版 7(请参阅网站页脚中提示 Powered by .NET Core 3.0.0-preview7-27912-14)。 且该站点已经在预览 7 上正常运行了两周多。 微软声称可能会在几周内将 Microsoft .NET 网站迁移到.NET Core 3.0 预览 8 版本。 另外,开发团队正在努力确保与 .NET Core 1.x 和 2.x 应用程序的高度兼容性,从而可以直接将现有应用程序快速升级到 .NET Core 3.0 版本。

.NET Core SDK 大小精简

使用 .NET Core 3.0 的 .NET Core SDK 要小得多。 主要原因是改变了构建 SDK 的方式改变,转而使用各种特定的“包”(引用程序集,框架,模板)。 在以前的版本(包括 .NET Core 2.2)中,我们使用 NuGet 包构建了 SDK,其中包含许多不需要的引用,导致浪费了大量空间。 您可以在.NET Core 3.0 SDK Size Improvements如何计算这些文件大小。 文章提供了详细说明,以便在自己的环境中运行相同的测试。 .NET Core 3.0 SDK 大小(括号中标注了大小更改)
操作系统 安装包大小 占用磁盘大小
Windows 164MB (-440KB; 0%) 441MB (-968MB; -68.7%)
Linux 115MB (-55MB; -32%) 332MB (-1068MB; -76.2%)
macOS 118MB (-51MB; -30%) 337MB (-1063MB; -75.9%)
Linux 和 macOS 的大小改进是令人惊奇的。 Windows 的改进较小,因为我们已将 WPF 和 Windows Forms 添加作为 .NET Core 3.0 的一部分。 令人惊讶的是,我们在 3.0 中添加了 WPF 和 Windows Forms,并且安装程序仍然(稍微)小一些。 您可以通过.NET Core SDK Docker映像包看到改进也不错(此处仅限于 x64 Debian 和 Alpine)。
发行版 2.2 压缩大小 3.0 压缩大小
Debian 598MB 264MB
Alpine 493MB 148MB
.NET Core 3.0 版本即将完成,故不再构建新功能,因此团队专注于稳定性和可靠性。 请尽快通过 Github 告诉开发团队您发现的任何问题,这样在发布 3.0 版本之前尽可能多地修复问题。

牛人故事:青年如何实现财务自由

We are not biggest but we inject the most ads into their site.

Whistleblower. I want to tell you the truth about my ad injection company.

My company is building apps that are in your app store and we auto-emable them on users and over time insert ourselves into those computers then inject ads and other tools.

I am a whisteblower. My company injects ads, monitor user behaviour, cheat affilaite system etc to make money.

The company name is Sterkly and Revizer. You may also knows us as Sambreel. We got sued by Facebook in 2011.

Please read this email.

I am going to give you secrets today that can get me fired and also hurt physically.

I am scared so I will no tell you my name.

The company is Revizer from Israel which merged with Sterkly from USA to form another entity named Avantis.

The company and it’s partners have made millions without anyone knowing.

My ex company is the underbelly of dark site of internet abuse..

We are so good, we have fooled Yahoo, Microsoft, Google, Amazon, facebook and every anti-virus companies.

The company leaders have even tried to bribe Microsoft and anti-virus company officers.

In Facebook we inject ads to make revenue.

They wont be able to trace it back to Sterkly as we have shell companies that hide our tracks.

We also track users so we know where your users are browsing and sell that data to RTB networks and data gathering companies. Its easy money and you never find out.

That traffic is high quality and we make lot of money from it.

Not everyone in my company knows about this as its a secret.

I am one of the few that know.

WHAT DO THE DO:

– Ad injection – we insert ads into white spaces in a browser and match it to look like the site

– Pop-under – easy money

– Pop-Up – easy money. Good for distributing pc and virus products that annoy you till you call the call center or buy it online.

– White space ads on Facebook

– Search injection into Google Bing and Yahoo. We make our listing look just like theirs and we make millions from this.

– Selling user browsing data to 3rd parties. This is easy as we track all users.

– Blocking Chrome, Firefox and Internet Explorer functions. They update their product to stop us so we inject software to disable updates and so we can keep the user for long time.

– Stuffing computers with affiliate links to earn money. We use this with Ebay, Amazon and many large ecommerce companies.

– Auto-enabling our ad units without user’s consents. We do installs of our software with companies below. The software we installs looks innocent, but after we get into the network, we change the file and now can install on a computer withou user consent.

HOW WE GREW TO BECOME ONE OF THE LARGEST COMPANIES:

– We made a lot of money from the list above.

– We became clients of large install companies in Israel to gain installs from Adult, Movie, File Sharing, Image and MP3 download sites. Its easy to get millions of users from here.

– We also know how to get good traffic. We have tools that we give to other companies that will inject into Google search results, Yahoo search results, and Bing.

– Also, some of our partners inject into Online Shopping for Electronics, Apparel, Computers, Books, DVDs & more, Newegg and others.

– The best customers are easily from Facebook. We inject hidden links and ads into their pages. We made it look like facebook, so user’s never knew. They clicked and we made millions.

The company leaders below push us to make aggressive products that hack.

– we are congratulated when we hack someone like you or Apple.

Sterkly Founder and CEO Markus:
https://www.linkedin.com/in/markus-levin

– he is a smart guy and has been in injection ads for long time

– he made millions doing this

Revizer CMO:
https://www.linkedin.com/in/tom-zakheym-b1946724

– Tom Zakheym | Facebook
https://www.facebook.com/zakheym

– He is the brains behind most of my companies products. He thinks of new hacks all day to make money.

– Tom is on cocaine or pot everynight but someone comes to work and works hard.

– He comes up with ideas on how to hack and built products that we can inject into all day.

– He throws parties in USA for all his partners that make him money. I am too low to be sent there, but other team members talk about the crazy parties in Vegas.

– He worked in porn industry before, so he has lots of connections there to adult sites to get installs.

New Company: http://www.linkedin.com/company/…. This article talk about the acquistion: Software developer ad co Revizer raises $20m – Globes English

WE ARE GOOD:

– We have companies in various islands, so that no one can touch us.

– We have shell companies we make when we want to.

– Sterkly is secretly giving us more ad technology so that we make more money.

– We attend tradeshows, finance groups so that we look good and get away with it all.

Clients who work with Sterkly, Revizer or Avantis (whatever you want to call it).

– Perion

– 50onRed

– Crossrider

– Cnet’s Free Software, Apps, Downloads, and Reviews

– OpenCandy

– Advertise.com | Online Advertising Network | Ad Network

– Superfish- yes the company that hacked Lenovo (Lenovo Only Made Up To $250,000 From Nightmare Superfish Deal, Say Sources)

– Dealply

– Revenue Wire

– Aedgency

– Webpick- lots of adult traffic that CEO loved

– Bittorrent

– Matomy Media

WHY AM I SAYING ALL THIS:

– I am sick of it.

– I show little kids ads to download games so that without their parents know we inject ads

– I fool less computer knowledge people like old folks to install our stuff

– I helped hack Facebook, Google, Apple either direclty or supported them

– This company is making too much money, they need to be legally stopped.

借用顾小北的一句话,来结束这篇英文文章:

我们,对于很多的事,选择去质疑,去嘲讽,去不屑….

但质疑的人或许并非无知,只是事情超过了他们的认知范围。互联网的三个世界,在地下世界发生地事情,地面上的人永远不知道是怎么回事。

Linux中iptables防火墙使用

对于有公网IP的生产环境VPS,仅仅开放需要的端口,即采用ACL来控制IP和端口(Access Control List).

这里可以使用Linux防火墙netfilter的用户态工具

iptables有4种表:raw–>mangle(修改报文原数据)–>nat(定义地址转换)–>filter(定义允许或者不允许的规则)

每个表可以配置多个链:
* 对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT
* 对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING
* 对于mangle是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

filter表的三个链详解:
* INPUT链: 过滤所有目标地址是本地的数据包
* FORWARD链: 过滤所有路过本机的数据包
* OUTPUT链: 过滤所有由本机产生的数据包

举一反三学习:

【例】:过滤所有的访问:
iptables -t filter -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -j DROP

【例】:对SSH的22端口开放
iptables -I INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 22 -j ACCEPT

【例】:开放80端口
iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d X.X.X.X -p tcp --dport 80 -j ACCEPT


【例】:来自124的数据禁止通过174 IP
iptables -A OUTPUT -p tcp -s 45.32.102.124 -d 157.240.22.174 -j REJECT 

【例】打印当前生效的iptables规则(-n显示IP地址)
iptables -L -n 

Linux中iptables防火墙指定端口范围

iptables -I INPUT -p tcp --dport 700:800 -j DROP 
iptables -I INPUT -s 11.129.35.45 -p tcp --dport 700:800 -j ACCEPT

一、 700:800 表示700到800之间的所有端口
二、 :800 表示800及以下所有端口
三、 700: 表示700以及以上所有端口
这个例子作用是,700-800端口,仅仅对 11.129.35.45 IP开放,白名单机制。

Snat、Dnat的iptables用途:
源地址转换(Snat): iptables -t nat -A -s 私IP -j Snat –to-source 公IP
目的地址转换(Dnat): iptables -t nat -A -PREROUTING -d 公IP -j Dnat –to-destination 私IP

iptables命令详解

iptables常用的命令选项有:
-P:设置默认策略的(设定默认门是关着的还是开着的)如:iptables -P INPUT (DROP|ACCEPT)
-F: FLASH,清空规则链的(注意每个链的管理权限)
-N:NEW 支持用户新建一个链,比如:iptables -N inbound_tcp_web 表示附在tcp表上用于检查web的。
-X:用于删除用户自定义的空链
-Z:清空链
-A:追加
-I num : 插入,把当前规则插入为第几条
-R num:Replays替换/修改第几条规则
-D num:删除,明确指定删除第几条规则
-L:查看规则详细信息,比如"iptables -L -n -v"
-s 表示源地址IP
-d 表示目标地址IP
DROP 表示丢弃(拒绝)
ACCEPT 表示接受
-p 表示适用协议,如tcp

其他更多例子:

【例】添加iptables规则禁止用户访问域名为www.sexy.com的网站。

iptables -I FORWARD -d www.sexy.com -j DROP

【例】添加iptables规则禁止用户访问IP地址为20.20.20.20的网站。

iptables -I FORWARD -d 20.20.20.20 -j DROP

【例】添加iptables规则禁止IP地址为192.168.1.X的客户机上网。

iptables -I FORWARD -s 192.168.1.X -j DROP

【例】添加iptables规则禁止192.168.1.0子网里所有的客户机上网。

iptables -I FORWARD -s 192.168.1.0/24 -j DROP

【例】禁止192.168.1.0子网里所有的客户机使用FTP协议下载。

iptables -I FORWARD -s 192.168.1.0/24 -p tcp –dport 21 -j DROP

【例】强制所有的客户机访问192.168.1.x这台Web服务器。

iptables -t nat -I PREROUTING -i eth0 -p tcp –dport 80 -j DNAT –to-destination 192.168.1.x:80

【例】禁止使用ICMP协议。

iptables -I INPUT -i ppp0 -p icmp -j DROP

2018个人总结

2018,收获很大,变化也很大,朋友说 “看着你变换方向,眼花缭乱的。”

如,暂停了坚持3年的Unity3D积累,转型更偏向网络技术、数据库技能的C#、SQL、网络编程能力;从表现层炫酷出发点到效率落地的变现尝试,对技术尤其是网络编程,很有趣、也很有挑战!

2018年总结:

  • 总结1:恢复技术博客

    www.xifarm.com 到现在5年了。 它记录了我成长点滴,属于自我驱动的一个展现手段,也是自我督促自我的一个办法。 过去2年,忙忙碌碌的,博客更新中断了不少,今年下半年重新捡起来了,自我感觉挺好的。
    我常对朋友说,沟通很重要。
    在对外沟通中表达自我的无外乎2种途径:写和说。 尤其是做一个多年的技术,写比说更关键,我们日常工作中,很多是编码事情、加班加点没有问题,但是到了对外输出时候,掉链子的案例不是一个两个,加强写作能力、加强表达能力,很重要。

    最近几次博客内容丰富多彩,如十年如一日的在Windows下工作,Mac仅仅是一个电脑,而今年对Linux Unbuntu进行比较多的实践;以及为了解决快速上网问题,折腾的华硕梅林路由器(Python),蛮有趣,开心不已。

  • 总结2:业余爱好-读书

    今年上半年出差多,下半年出差比较少了;读书时间大部分是出差中或者晚上夜深人静的时候。

    • 《不要独自午餐》:人际关系,非常棒的一本书,值得读7遍的书。
      1. 抓住当下,能做什么,想做什么,赶快动手。因为鲁莽之中也蕴藏着能量与魔力。 ——歌德
      2. 失败,再失败,接着失败的姿态就没那么难看了。”
      3. 即使你不是个天才,做好准备工作也会让你看起来像个天才。”
    • 《林肯传》:美国总统传记,记录文学风格,比较朴实
      我非常惊讶于,美国总统竟然是个屌丝,不是一般屌丝而是非常屌丝的屌丝。
      职业:农活、伐木工、邮差、律师…..
      他有过人的记忆力、演讲动员能力、容忍容错能力(和他妻子的坏脾气磨炼有关系)
      林肯善于讲故事、交朋友、信用良好、为人四海。
      在美国南北分裂的时刻,挽救了一个大国,才有了今天的美国。
    • 《向赢家一样思考》:美国总统,川普的理智人生!
      网上,对他负面新闻很多,我很是好奇,这么奇葩的人,怎么能当上总统,所以就翻翻这本书,内容是川普碎片说教类型的经验,能看出来,他为人很傲,但是不傻。
    • 《清明上河图小说》:破案、解密,逻辑胡扯的类型。接人待物,千年不变。 每当静静夜读看到书中描写古人的市井生活,令人感到非常愉悦,宋朝历史,本来我就知之甚少,不管内容是否属实,就当虚构小说来读。
    • 《洪业》:今年突然对东北、满族挺有兴致,就找了这本书看。 内容讲的是满族八旗的创业史。自从看了《李自成》小说后,我素来对明末清初的历史很反感。这本书,站在中立立场,详细的描述了满、汉的政治、军事格局,如几万八旗军、如何把百万汉族武装消灭的,读后令人反思不易:战略、战术、战斗。
    • 《左宗棠》:以前在《胡雪岩》中片段了解过这位清末名臣,这次系统阅读了。时代造英雄,英雄造时代。相比同期的曾国藩、李鸿章,左是唯一没有污点的。
    • 《世纪三部曲》:涉及一战、二战历史、国际、爱情、奋斗,是我非常喜欢类型的小说。 小说的细节描写手法非常细腻,如俄国十月革命、一战萨拉热窝事件、二战珍珠港、英国美国德国不同的民主化进程。戏说部分占90%,历史部分能学到很多教科书没有的,夜深人静,流连忘返于100年前的岁月,真的是大国格局、世纪视野。
  • 总结3:人到中年的一些思考

    年初,2岁的小儿子手被夹了,正月十五我和妻在医院陪护了1周,期间2个孩子在病房内玩耍(正月住院的人很少,我们几乎是包间待遇), 往往在哄孩子睡后,我们2人,促膝畅谈,不再争论、不再空想,切切实实的把当下家庭危机想办法落实解决,目前看,密切的沟通着实有效,今年做了很多落地的重大决策:她觉得我听了她的,我认为她听了我的,结果是大家统一步调,都收益了。

    年末,合伙人生病住院半个月,开始诊断为比较严重的疾病,我陪他在医院呆了一天,目睹了往日精力超群的他,躺在病床上精神极度虚弱;不由得感想联翩,为他的病情感到难过。 合伙人之间,有了想法就要开诚布公,时不待我,机会、市场转瞬即逝,珍惜当下的每一天。
    放假前一天,医院诊断结果发布,很轻的病,有惊无险。

    相对健康而言,其他,都是小事!
    

    同学会,我碎碎念了很多次的事情,今年7月21日,终于在北京回龙观举行:转眼距离上大学已经18年了,同学们热情洋溢从各地赶到北京。虽然这么多年未见,但是,大家很快旧情复燃,彼此一点都不客套,相谈甚欢。

    同学会,是一次重要的个人复盘的事情: 往日大家同窗,时过境迁,大家目前在各自领域崭露头角,整体都不错。

    温故知新吧。 加油加油。
    

2019年规划:

  •   继续读书提升:
    学习一些有趣的事情,社区活动交友游学,www.xifarm.com 博客笔耕不辍,自我驱动前进, 兴趣是最好的老师。
    落了灰的《影响力》、《少有人走的路》,再翻翻。
  •   落地场景实践:
    如树莓派、Python编程,一遍教小孩子玩,一遍也挑战自己动手能力,2019年培育一个自我的业余兴趣点爱好–折腾折腾:也算是与儿子一起,与时俱进吧。
  • 创业的驱动力:

    把创业的事情落地到实处,投入产出、利益分配,发挥基因优势。说反对,也是有技巧的。
    不能太直接和太硬,而是要委婉的引导进行下去。 曲成万物而不遗。

    家和万事兴!
    稳定团队,稳定自我内心,情绪管理。
    思想不能太懒惰。


往年博客总结索引:
* 2013年个人总结三部曲(序):关键词
* 2013年个人总结三部曲(上):读书
* 2013年个人总结三部曲(中):写字
* 2013年个人总结三部曲(下):学习
* 2014年个人工作总结
* 十年的路:大学生-工人-程序员-研发经理-技术支持
* 2015年个人工作总结

Unbuntu 自动重启MySQL

上个月,通过Unbuntu搭建了WordPress,一切运行良好。
UBUNTU搭建WORDPRESS-MYSQL-APACHE

但是,最近几天,不知道啥情况,MySQL偶尔会出现Stop;影响了blog的使用,所以,我这里尝试了自动调度,间隔1分钟查看MySQL,如果Stop,则自动重启。

在网上找到对应的解决方案,分3步实施。
Bash Script to check if services are running and restart if not. Sends email to you.
sierracircle/services-checker

Step1:配置脚本

/scripts/services.sh

拷贝上面的github源码,修改邮箱和你需要启动的服务。

chmod +x services.sh 

测试shell脚本

./services.sh
bash services.sh

Step2: 配置crontab 守护进程

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

crontab -e

#check on services
*/1 *  * * * /your/path/to/scripts/services

Step3:启动守护进程

大约需要2分钟。
你可以尝试手工Stop MySQL,1分钟后观察结果。

service mysql stop

参考crontab使用实例。

实例1:每1分钟执行一次command
命令:
* * * * * command

实例2:每小时的第3和第15分钟执行
命令:
3,15 * * * * command

实例3:在上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * * command

实例4:每隔两天的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 */2 * * command

实例5:每个星期一的上午8点到11点的第3和第15分钟执行
命令:
3,15 8-11 * * 1 command

实例6:每晚的21:30重启smb 
命令:
30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb 
命令:
45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb
命令:
10 1 * * 6,0 /etc/init.d/smb restart



实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb 
命令:
0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb 
命令:
0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb 
命令:
* */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb 
命令:
* 23-7/1 * * * /etc/init.d/smb restart

实例13:每月的4号与每周一到周三的11点重启smb 
命令:
0 11 4 * mon-wed /etc/init.d/smb restart

实例14:一月一号的4点重启smb 
命令:
0 4 1 jan * /etc/init.d/smb restart

实例15:每小时执行/etc/cron.hourly目录内的脚本
命令:
01   *   *   *   *     root run-parts /etc/cron.hourly

Squid3 IP Proxy 隐藏原IP

网络访问,使用IP Proxy,有一个很重要需求,隐藏原IP地址。

如果不隐藏,显示如下:
X-Forwarded-For: 191.1.2.5

如果因此,则显示如下:
X-Forwarded-For: unknown

查查已有的配置信息:

egrep -v '#|^ *$' /etc/squid3/squid.conf  #查配置信息

修改方法:

# vi /etc/squid3/squid.conf

我的squid.conf配置信息如下:

# Hide client ip #
forwarded_for delete

# Turn off via header #
via off

# Deny request for original source of a request
follow_x_forwarded_for deny all

重启服务

# /etc/init.d/squid restart

IP信息测试网址:
https://www.ip-adress.com/what-is-my-ip-address

Ubuntu搭建WordPress-MySQL-Apache

目标

技术博客www.xifarm.com有5年时间了.

原来在虚拟机/VPS上搭建,不过都是Windows系统下的。 最近突发奇想,试试迁移到Linux的Unbuntu下。说干就干,抽空用了大约3天时间*每天1~2小时投入,完成搭建。

这里记录一下过程,分享给有需求的朋友。

1. 安装LAMP (Install Linux, Apache, MySQL, PHP)

首先需要安装 (LAMP) stack, 顺序执行命令,很简单。

sudo apt update
sudo apt install apache2

http://your_server_ip

sudo apt install mysql-server
sudo mysql_secure_installation
sudo apt install php libapache2-mod-php php-mysql
sudo vi /etc/apache2/mods-enabled/dir.conf

新的wordPress已经推荐支持Php 7.2,所以直接安装php 7.2。

sudo apt-get install Python-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.2

2. 安装WordPress

cd /tmp
curl -O https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz

touch /tmp/wordpress/.htaccess
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

mkdir /tmp/wordpress/wp-content/upgrade
sudo cp -a /tmp/wordpress/. /var/www/wordpress
sudo chown -R www-data:www-data /var/www/wordpress

配置3个字段,可完成DB创建。(前置条件,需要先用MySQL创建DB,这里不再赘述)

curl -s https://api.wordpress.org/secret-key/1.1/salt/

vi 打开配置文件 /var/www/wordpress/wp-config.php



define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpressuser'); /** MySQL database password */ define('DB_PASSWORD', 'password'); define('FS_METHOD', 'direct');

3. SSL增加HTTPs

今年Google Chorome、Apple Safari先后声明,全力支持HTTPS,故,本次也一并把HTTPS考虑在内了。 原来以为HTTPs和域名一样需要申请、审核,比较费时。

看了几篇博客,才知道通过certbot 申请,整个过程完全自动化,网速快的话10分钟可以完成申请(90天免费,写个自动化调度执行命令Refresh即可实现长期免费)。

按照顺序执行command:

sudo add-apt-repository ppa:certbot/certbot

sudo apt-get update
sudo apt-get install Python-certbot-apache
sudo certbot --apache -d example.com
sudo certbot --apache -d example.com -d www.example.com
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

cron script placed in /etc/cron.d
sudo certbot renew --dry-run

tips: 几个比较耗时的过程总结

mySQL外网运维权限

linux的安全大门果然紧闭,难怪安全呢;不像windows安全大门比较松,使用起来灵活一些。如,MySQL访问权限,Linux默认在localHost内开放,但是我们为了运维方便,需要向定向IP进行授权。

通过修改配置文件,可开启MySQL外网访问权限:增删改查。

打开/etc/mysql/mysql.conf.d/mysqld.cnf 文件

修改IP地址
bind-address       = 0.0.0.0

mysql -p -u root

查询当前权限
select * from mysql.user; 
GRANT ALL ON *.* TO 'root'@'192.168.0.7' IDENTIFIED BY 'password' WITH GRANT OPTION;

FLUSH PRIVILEGES; 
EXIT;
GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION;

同时,需要Linux系统防火墙开放3306端口:

sudo ufw allow 3306
sudo ufw status

netstat -an | grep 3306
netstat -an | grep -i established
WordPress调试开关

导入备份的DB,打开博客首页,奇怪,没反应。

估计是DB或者配置问题,为了Debug log,需要开启了WordPress自带的log开关,查debug.log看看端倪。

在 wp-config.php,添加如下代码:

 // Enable WP_DEBUG mode
define( 'WP_DEBUG', true );

// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );

// Disable display of errors and warnings 
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define( 'SCRIPT_DEBUG', true );

WordPress固定连接访问失效解决

为了SEO,我把默认的WordPress博客链接修改为 http://www.xifarm.com/photononazure/
但是默认的Apache2没有打开这个规则,需要修改Apache的config文件,并重启Apache2服务。

vi /etc/apache2/apache2.conf

<Directory /path/to/wordpress>
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

# Change AllowOverride None to AllowOverride All

sudo a2enmod rewrite

sudo service apache2 restart

参考文章:

1. How To Install WordPress with LAMP on Ubuntu 18.04
2. How To Secure Apache with Let’s Encrypt on Ubuntu 14.04
3. How to set up MySQL for remote access on Ubuntu Server 16.04

Linux Ubuntu系统之PPP拨号经验分享

Linux Ubuntu系统之PPP拨号经验分享

近期,工作需要,我负责开发PPP拨号模块。
说起拨号,算算时间,我已经做过2次了, 暴露年龄了,呵呵。

第一次是刚毕业做的PPOE拨号,给电信做拨号软件,在河北石家庄工作过一段时间,基于windows xp。

第二次是在移动网优,3G手机路测,即著名的TD-SCDMA,基于AT指令控制手机驱动。

这次,是用的PPPD拨号,在Linux系统下。
pppd 拨号模块,Linux系统是自带的, 就像windows下自带的RAS拨号一样,打印机等很多应用需要通过拨号方式进行通信的。

Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-161-generic x86_64)
pppd 2.4.5

参考文档,配置4个文件:

/etc/ppp/peers/myvpn 账号信息

remotename myvpn
linkname myvpn 
ipparam myvpn
pty "pptp *** --nolaunchpppd --loglevel 0"
lock
nodeflate
name ***
usepeerdns
require-mppe
noauth
require-mppe-128
defaultroute
mtu 1416 #特别关键!!!

/etc/ppp/chap-secrets VPN用户名密码

user pass

/etc/ppp/options 默认设置项

lcp-echo-failure 10 # (from /etc/ppp/options)
lcp-echo-interval 10 # (from /etc/ppp/options)
lock
crtscts
nodeflate
persist
asyncmap 0
noauth
hide-password
noipx

/etc/ppp/options.pptp 设置项

lock
noauth
refuse-pap
refuse-eap
refuse-chap
refuse-mschap
nobsdcomp
nodeflate
require-mppe-128
ipparam myvpn
defaultroute

个人总结的技巧:
– 一定要升级Python3.4 –> Python3.7?

我开始很纠结Python版本,代码开发是Python3.7最新版,而Ubuntu自带的是Python 3.4, 故想办法升级Python3.7,如果在本地网速很快,这个不是什么难事,1小时工作量。

但是,远程链接SSH,VPS服务器在国外,网速卡的厉害,本来1小时工作,忙乎了一个上午才搞定,升级到Python3.6 + pip3 。 但是一想,我还有n个服务器呢,故晚上加班把代码降级为pyhon 3.4,这样部署就方便多了 — 非原则问题,不要在环境上折腾太久,条条大路通罗马嘛。

这个事情,给我很大的启示:不要做战略的矮子,再勤劳的执行力, 团队的效率也上不来的。

平衡、成本、决策!

  • 部署Python程序,background job running

windows开发C#很多年,除了前几年做Unity3D开发的游戏APP(含VR、AR),这些都是有GUI界面的,而在Linux下,第一个门槛就是无UI界面。
调试程序通过,部署后,我关闭ssh下班了,吃完饭,远程ssh,怎么我的Python程序不见了,惊讶不已,才***行代码,而且我写的是 while true 循环,不可能自己退出啊。
nohup Python3 main.py &
ps ax | grep py

上网搜索,多亏google,很快就明白了,SSH通过22端口,开启了一个“session”,一般,如你执行 Python3 main.py,随着SSH Session结束,Linux会kill这个process的。 而这个PPP拨号程序需要作为一个长时间运行的,故需要用 nohup 和 & 关键字,这样当你退出ssh,这个程序会驻留系统。

那么问题来了,查询运行的process,常用的 ps all就是不灵了。

要用 ps ax | grep py 才可以。

  • linux常用工具工具
    • [ ] vi 编辑器,linux运维必备神器!
    • [ ] cat /var/log/syslog | grep pppd #输出mylog.log, search pppd
    • [ ] cat /var/log/syslog | tail -n 100 #输出mylog.log 文件最后100行
    • [ ] egrep -v ‘#|^ *$’ /etc/ppp/options #正则,列出配置文件起作用的
    • [ ] * “>” /var/log/syslog #clear syslog
    • [ ] * dhclient -v -4 : refresh network #重新获得IP.

参考文档:
1. https://superuser.com/questions/949520/wvdial-ppp0-and-setting-default-route-automatically
2. https://askubuntu.com/questions/891393/vpn-pptp-in-ubuntu-16-04-not-working
3. http://www.cnblogs.com/simonshi/archive/2010/04/23/1718984.html

微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)

    网上火热的“微软.NET年芳15”文章,我也得写点什么嘛,毕竟我还是现任的微软MVP

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb

 

摘录网上的“.NET 15周年”信息如下:

微软的 .NET 框架本周迎来了 15 岁生日。.NET 的第一个版本在 2002 年 2 月 13 日作为的 Visual Studio.NET 的一部分首次公开亮相。过去 15 年,.NET 框架从一个流行的闭源软件开发平台,变成了一个开源的跨平台开发工具,微软是在 2014 年 11 月 12 日宣布开源 .NET,支持竞争对手 Linux 和 OS X 的平台。微软称,Visual Studio 2017 将于 2017 年 3 月 7 日发布,而 Visual Studio 也迎来了 20 岁生日,开源的 .NET Core 也将发布 2.0版本

 

      我梳理了一下目前的.NET技术栈: 业务是基于Unity3D(跨平台游戏开发引擎),开发AR、VR 应用; 绝大部分项目采用单机版,使用的编程语言是C#(Mono.NET),不过最近交流的AR几个业务,明显用户已经不太满足单机版,有更多的需求需要用到联网的服务器功能,故技术选型就势在必行了:也算是未雨绸缪吧。

 

技术栈选型

我的技术选型有2点原则

  1. 成熟,有助于提高开发效率
  2. 人多,有坑大家一起填

这2点原则是基于第一次创业失败的经验总结。约在3年前吧,刚开始创业的时候,特别排斥C#.NET技术(互联网创业,还用C#,说出去都不好意思啊),虽然用的是Unity3D游戏引擎(C#),但是服务器选择却是非.NET倾向的。 那个时候对比了多种技术栈:

  • PHP游戏服务器
  • Node.js游戏服务器
  • C++游戏服务器
  • JAVA游戏服务器

权衡再三选择是Java,采用的是SmartFoxServer商用服务器框架,JAVA和C#非常类似、学习成本低一些。

种种原因,后来呢,第一次创业失败了,我的反思是“创业成功大部分原因是CEO的引导有方,创业失败大部分原因是CTO的选择失误导致”。

当时我没有考虑到成本意识、对一个5人研发团队,C#、Java并行的沟通风险有多大:

如果当时客户端是C#技术栈、服务器端也是C#技术栈,则可以从5人技术团队裁掉1人,节约20%人力成本,而且减少沟通后可以提高30%的开发效率,进而有效的推动产品快速扑向市场的速度,可惜这个是“事后诸葛亮”。

这个“事后诸葛亮”,我一直如噎在喉.

       不过去年在一次微软技术峰会,看到网易案例的演讲,我的眼睛亮了起来:“微软技术大神徐玉涛Tory做的分享—网易《绝代双骄》将游戏后端从Java转为新一代.NET Core,研发效率提升20%,服务器成本节省50%”–在线视频为证。

 

故对选择一款C#的服务器,以打通AR、VR客户端、服务器端,提高开发效率,生产力加速,我个人非常期待

Photon

商用

成熟

C# (Mono.NET)

ASP.NET Core

开源

 2.0还未发布

.NET Core

Unity Network Unity自带 局域网

C# (Mono.NET)

有SmartFoxServer的实践经验,故雷同的商用服务器Photon我本次做了专门的实践.

Photon支持3种类型服务器

  • LoadBalancing: 负载均衡服务器
  • MMO: 大型MMO网游服务器
  • Lite: 大厅、房间类型服务器 (相对简单一些)

Photon授权策略:免费版100个CCU (对于绝大部分AR、VR项目足以了);  商用版3500美金不限制CCU (约2.5万人民币)。

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb1

 

云服务器选型

我的选型原则也就2点:

  1. 速度:国内访问速度快、快、快!
  2. 便宜:方便我们这种初创型公司节约不必要的成本

虽然同样是世纪互联在运营,但是早期的AZure在我心目中,网速那是非常非常的慢、价格也是高高在上(和国内的阿里、百度等云比起来,毫无优势可言),故原来使用过阿里云、七牛云,国际版高大上的AZure和AWS都未曾考虑过。

但是呢,微软MVP内部微信群、邮件组,AZure的讨论还是很多的,尤其是“自2017年2月1日起,Azure虚拟机价格大幅下调,最高降价幅度高达60%!”这则消息讨论了好几天,我也渐渐回头持续关注AZure。

通过信息搜集,我了解的AZure信息碎片如下:

Windows Azure在北京、上海部署有服务器

中国的AZure是个”国内版本”–和国际版AZure采用物理隔离方案

MySQL也是比较符合目前国内接地气的方案;

AZure新的特效,国际版和国内版部署时间约差不多是3个月至半年。

https://www.azure.cn/  是国内版本的网站

 

在Azure上搭建Photon服务器(C#.NET)

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb2

 

未来AR产品软件框架是这样的,服务器端需要搭建游戏逻辑Photon、以及资源更新AssetBundle–更新资源。MySQL目前是国内很多公司的标配–社区版免费。

 

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb3

Photon运行方式很简单,选择服务器实例,启动应用即可,符合GUI操作习惯。

 

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb4

AZure虚拟机,提供了C盘,直接把需要的软件和数据,通过远程桌面拷贝过去即可,windows Server 2012英文系统,还是挺方便的。

 

几个有用的小技巧:

  • TT模板:database first–自动生成模型代码

原创文章来源: 使用T4模板生成MySql数据库实体类

注意在VS2015下,需要把.ttinclude后缀修改为.tt才可以。 同时,需要修改 数据库连接为你自己的 9 var connectionString = @"server=127.0.0.1;uid=root;pwd=12345678;charset=utf8;";

AZure开5505 UDP端口

  • 前端、后端C#链接类快捷方式:节约成本的王道

image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb5

即,直接可以实现前段和后端复用模型实体代码、传递的Code枚举代码,以减少文档重复工作量。

以关键的OperationCode为例,如果前端是C#、后端是Java,则无法做到代码级别复用,即需要写文档来约束。而相同的C#代码后,注释好.cs文件,前端和后端是同样的代码,则沟通起来畅快了很多。

public enum MyOperationCodes : byte
    {
        /// <summary>
        /// LoginOperation
        /// </summary>
        LoginOperation = 100,

        /// <summary>
        /// EchoOperation
        /// </summary>
        EchoOperation = 101,

        /// <summary>
        /// GameOperation
        /// </summary>
        GameOperation = 102,

        /// <summary>
        /// ChatOperation
        /// </summary>
        ChatOperation = 103,

        /// <summary>
        /// ChatOperation
        /// </summary>
        CCUOperation = 104,
    }

  • MySQL ORM (Dapper框架):

    我选择了轻量级、火热的Dapper(stackoverflow网站就用它来做ORM),而且开源。 image  微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET) image thumb6

    使用SQL部分代码如下:

Db aa = DbInit();

 
var a3 = aa.Query<device>("select * from device where uuid=@uuid", new { uuid = "aabb636238694579824398" });

 

device dv = new device
{
     UUID = "aabb" + DateTime.Now.Ticks.ToString(),
     DeviceModel = "IOS",
     DeviceName = "Iphone 5s",
     RegisterDate = DateTime.Now.AddDays(-1),
     UpdateDate = DateTime.Now,
     TokenID = DateTime.Now.Ticks.ToString()
};
long ret = aa.Devices.InsertOrUpdate(dv);

var a1 = aa.Devices.All();

    • Json序列化工具:newtonsoft

    本来Unity5.3已结自带了Json序列化API,但是有bug,Json序列化可能为空,就选择了”老朋友”newtonSoft.dll了。

    • AZure开通端口
    • 应用跑起来后,端口一直不通,需要AZure开通端口–首先在Windows Server里面开通端口(TCP\UDP),然后再AZure里面开通:网络接口–网络安全组–入站安全规则、出站安全规则。

     

     

    PhotonLab 源码:https://git.oschina.net/xifarm/PhotonLab

     

    参考

    1. 时间飞快–连微软官方都开源了208个源码库
    2. 岁月在挑灯夜战中走过:亲历的软件框架
    3. 我的微软.net演进路线图
    4. 荣获2015微软.NET MVP称号!
    5. 写在.NET 15周年之际——致那些仍然爱着.NET的中国程序员们 来自微软MVP Tony Qu微信
    6. .NET 十五岁,谈谈我眼中的.NET 来自微软MVP  张善友的博客》

    VR 2016年元年小结:Vision VR/AR Summit Asia 2016

       上周,Unity官方组织的Vision VR/AR Summit Asia 2016成功举行。本次活动,对VR 2016元年来说,如同”冬天里的一把火”, 现场有超过1500人在场,足足2天的干活分享。下面以个人视角进行解读:

    Unity3D、移动VR、VR 趋势、ARVR未来

     

    • Unity3D

    Unity3D作为VR使用最多的2个引擎之一, 继续发挥领跑角色。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb

    不过,Unreal目前使用人数较2016年初而言,增加了不少。

    未来Unity3D在移动端VR、AR会占据绝对地位,而在主机、PC VR方面,其和Unreal的距离越来越小。

    同时,由于竞争机制,Unity也加快了在VRAR中的产品迭代,如Unity 5.6原生集成了Google Cardboard、Daydream,并在移动端支持了Linear 颜色空间,且Unity下个版本会原生支持Vofuria等。这些新特效对ARVR开发者而言,绝对是好消息中的好消息的。

     

    • 移动VR

      移动端市场在爆发:小米公司、Google公司站台表达了观点,移动VR才是王道,大家请站好队。

    无独有偶,12月15日,华为和小米选择同一天发布了自己的VR设备.

    小米VR眼镜正式版评测:199元就值得买了吗?

    华为全面布局VR,Mate 9 Pro助力VR生态发展

    Daydream View评测:史上最舒适的VR头显

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb1

     

    在移动VR中,我个人对DayDream尤其看好,上个月还专门撰文 《DayDream, 移动VR 2.0里程碑: 概述》。 唯一可惜的是,都快1个月了,国内还没有卖Daydream手机的,除了Google亲儿子Pixel外。

    不知道华为、小米们,能否在2017年Q1出Daydream设备呢–直接可以在Daydream View使用的。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb2

    • VR 趋势

    在14号晚,Vision Party中,一位老友随意谈到:

     

    VR最近咋样了?  我看好像都要跪了。

     

    诚如是, 今年VR如过山车一样,年初3~4月份如火如荼,年底10月份后就”低调”很多了,相反很多看衰的新闻层次不齐:业内曝光n个企业裁员、融资不利等等。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb3

    如通过百度指数看,最近VR关键词搜索量,几乎是今年最高峰的30%。网络大数据流量上,也间接佐证了VR、AR行业的2016大起大落事件。

     

    从技术迭代周期看,VR较AR成熟度搞一些,目前VR在爬坡阶段:完美的无线VR解决方案在研发中。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb4

     

    2017年的预测–来自HTC vive的从青口述。 他认为目前的确是VR寒冬,但是2017年发展会非常好,尤其是VR范教育方向,会爆发。

    HTC不仅仅有Vive的PC端解决方案,其还代工了Pixel daydream手机,故HTC也具备移动VR的潜力。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb5

     

     

    • ARVR未来

    微软不老:HoloLens依然大放异彩。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb6

    微软在ARVR上,明显较Google、Apple公司发力要明显一些。如目前的HoloLens,和明年年初携手6个厂家(华硕、宏碁、联想、惠普、戴尔、3Glasses)推出的PC VR方案,均说明了“朕一天不死,尔等永为太子”。

    核心是Windows 10系统的holographic,目标剑指VR底层操作系统。

     

    比尔盖茨:“对一项新技术,人们往往高估2年内的变化,而低估接下来10年内的变化。”

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb7

     

     

    一个好的社区,是有温度的社区。

    每次参加会议,30%是为了听、看、学习,其他70%是为了和老友聊天。

    image  VR 2016年元年小结:Vision VR/AR Summit Asia 2016 image thumb8

     

    参考: Unite Beijing 2015大型活动