特色

微软.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 大小(括号中标注了大小更改)
操作系统安装包大小占用磁盘大小
Windows164MB (-440KB; 0%)441MB (-968MB; -68.7%)
Linux115MB (-55MB; -32%)332MB (-1068MB; -76.2%)
macOS118MB (-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 压缩大小
Debian598MB264MB
Alpine493MB148MB
.NET Core 3.0 版本即将完成,故不再构建新功能,因此团队专注于稳定性和可靠性。 请尽快通过 Github 告诉开发团队您发现的任何问题,这样在发布 3.0 版本之前尽可能多地修复问题。

Docker实践的自我认知

Docker实践的自我认知

前几天翻译了一篇文章,郁闷了好几天:
我自己.net阵营下开发已有经年。

在VS 2003年时代,在学校做毕业设计,一个Winform程序,单机版,SQL Server数据库十几个表,。

业务场景是的旅游管理系统,简单的一些CRUD操作,我用的
ADO.net,通过获得DataSet、DataReader,进行insert、select、update、delete。
反正系统没人用,自写自话,没有啥框架、分层概念(虽然理论上知道这些概念,但是实战中没有这个需求),就1个人使用,10几个表,几十条数据记录。

https://www.codeproject.com 看看文章、下载源码。
http://www.codeplex.com/ 微软出的源码共享平台

www.github.com 下载源码。

后来参加工作后,接触项目,慢慢框架、分层、缓存等等融入:核心是有需求场景、有数据量、有用户,技术就得更新升级。

IIS

轻量级网络服务器 Self Hosting Nancy

selfhost

SharpDevleop: plugin方式的

ORMs
方案1:NHibernate ORM to the .NET Framework
方案2:EF ( ADO.NET Entity Framework)
方案3:LINQ to SQL

iBATIS
在*.xml里面写SQL,由iBATIS进行DTO转换。

Select操作,表关联导致SQL优化。

插入数据库,涉及到批量。

如几十条记录,可以通过如下方式优化
性能分析:

foreach (var adjective in adjectives) {
    dataContext.AdjectivesExpanding.InsertOnSubmit(adjective)
    dataContext.SubmitChanges();
}

Or:

foreach (var adjective in adjectives) {
    dataContext.AdjectivesExpanding.InsertOnSubmit(adjective);
}
dataContext.SubmitChanges();

如果成百上千,则通过BCP进行批处理,项目中曾经通过BCP处理50万入库情况,速度在生产环境没问题。
BCP在Oracle、Sybase、SQL Server都支持。

Java Spring全家桶三件套,基本满足Java需求了。

Docker解决实际问题1:VPS搭建xifarm.com博客

采购了VPS,刚学习开始LAMP,大约需要1天,不会Ubuntu Linux系统走了很多弯路。
三四次反复实践后,通过shell批处理脚本,能在2~3小时内从0把VPS搭建好,换VPS方便极了。

在有了Docker后,找现成的LAMP镜像,短短20分钟即可搭建好(VPS在海外,Docker 网速不是问题)

即,效率从1天3小时20分钟,分别提高了70%,1000%
就这一点看,Docker在部署环境上,功不可没,极大提高了DevOps生产效率。

Docker解决实际问题2: Tensflow的学习

学习Python、学习Tensflow,配置环境是新人头大的事情。 python默认安装的3.7最新版,但是Tensflow最好支持的是Python 3.5版本,还有其他环境,仅仅折腾Linux系统环境,以我的经历,半天都未必搞得定。
而有了Docker后,直接下载Tensflow镜像,20~30分钟时间即可开始写机器学习的hello world应用了,一下子飞了起来。
再也不用被烦人的环境配置问题困扰了。

做技术的,经常保持知识刷新,这个是必须的,尤其是teamLeader、架构师,吃老本很快就回出问题。

Docker

Docker解决实际问题3: 干净环境的测试电脑。

快速干净部署一个虚拟机。

+------------+  docker build   +--------------+  docker run -dt   +-----------+  docker exec -it   +------+
| Dockerfile | --------------> |    Image     | --------------->  | Container | -----------------> | Bash |
+------------+                 +--------------+                   +-----------+                    +------+
                                 ^
                                 | docker pull
                                 |
                               +--------------+
                               |   Registry   |
                               +--------------+

执行MySQL报错

今天新采购了柒比贰WordPress主题,安装主题时候报错: MySQL命令行使用sql语句进行建表时,MySQL 报错,遇到同一个问题,写一篇博客来加深印象。

原SQL语句:

CREATE TABLE wp_zrz_order 
(
    order_address longtext
) CHARSET = utf8

执行报错:

    [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') CHARSET=utf8' at line 21]

20191014222352.png

这个问题是语法上的错误,在MySQL中,为了区分MySQL的关键字与普通字符,MySQL引入了一个反引号。在上述的sql语句中,数据库名称使用的是单引号而不是反引号,所以会就报了这个错误出来。修改后为:

CREATE TABLE `wp_zrz_order`
(
    order_address longtext
) CHARSET=utf8

在英文键盘输入环境下,按图示按钮输入反引号 `
20191014222803.png

推荐一下,柒比贰WordPress主题真的好用,比较适合国内情况,推荐。

这里是摘要

:sunglasses:

tilde

刷新–选择1–保存–再回来–再保存 【出错】

20191015092709.png

int x = 10;
int y = 20;
var x = 10
var y = 20

this is good.
this id good 2.

  <data xmlns:sct="section" xmlns:his="history">
  <AppRef_Name_Section_AppRef__2 datasourcename="Name">Name1</AppRef_Name_Section_AppRef__2>
  <AppRef_Occupation_Section_AppRef__2 datasourcename="Occupation">1</AppRef_Occupation_Section_AppRef__2>
  <AppRef_Street_Section_AppRef__2 datasourcename="Street">1</AppRef_Street_Section_AppRef__2>
  <AppRef_City_Section_AppRef__2 datasourcename="City"/>
  <AppRef_State_Section_AppRef__2 datasourcename="State" type="list">
  <value display="- Select -"/>
  </AppRef_State_Section_AppRef__2>
  <AppRef_Zip_Section_AppRef__2 datasourcename="Zip"/>
  <AppRef_Email_Section_AppRef__2 datasourcename="Email:">111@rt.com</AppRef_Email_Section_AppRef__2>
  <AppRef_Phone_Section_AppRef__2 datasourcename="Phone"/>
  <sct:Section_AppRef type="container" datasourcename="">
  <repeats>
  <repeat instanceindex="2">
  <field fieldid="AppRef_Name" dataitem="AppRef_Name_Section_AppRef__2"/>
  <field fieldid="AppRef_Occupation" dataitem="AppRef_Occupation_Section_AppRef__2"/>
  <field fieldid="AppRef_Street" dataitem="AppRef_Street_Section_AppRef__2"/>
  <field fieldid="AppRef_City" dataitem="AppRef_City_Section_AppRef__2"/>
  <field fieldid="AppRef_State" dataitem="AppRef_State_Section_AppRef__2"/>
  <field fieldid="AppRef_Zip" dataitem="AppRef_Zip_Section_AppRef__2"/>
  <field fieldid="AppRef_Email" dataitem="AppRef_Email_Section_AppRef__2"/>
  <field fieldid="AppRef_Phone" dataitem="AppRef_Phone_Section_AppRef__2"/>
  </repeat>
  </repeats>
  </sct:Section_AppRef>
  </data>

Why you need asyncio ?

  • reason 1
  • reason 2
  • reason 3

Principle behind the asyncio

完美解决 ERROR 1064 (42000): You have an error in your SQL

 今天新采购了[柒比贰WordPress主题](https://7b2.com/?i=vXxymqWPj),安装主题时候报错: MySQL命令行使用sql语句进行建表时,MySQL 报错,遇到同一个问题,写一篇博客来加深印象。   原SQL语句:“`CREATE TABLE wp_zrz_order (    order_address longtext) CHARSET = utf8“`执行报错:
        [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘) CHARSET=utf8’ at line 21] 
![20191014222352.png](http://pic.xifarm.com/.img/20191014222352.png)

这个问题是语法上的错误,在MySQL中,为了区分MySQL的关键字与普通字符,MySQL引入了一个反引号。在上述的sql语句中,数据库名称使用的是单引号而不是反引号,所以会就报了这个错误出来。修改后为:“`CREATE TABLE `wp_zrz_order`(    order_address longtext) CHARSET=utf8“`
在英文键盘输入环境下,按图示按钮输入反引号 `![20191014222803.png](http://pic.xifarm.com/.img/20191014222803.png)
推荐一下,[柒比贰WordPress主题](https://7b2.com/?i=vXxymqWPj)真的好用,比较适合国内情况,推荐。

.NET Core 很酷,你不得不知!

我一直回想我的第一篇博文,那是关于多个服务的服务器平台的详细教程,它使用 GitLab CI 在 AWS 上,当时使用单个命令行进行部署, 至今回想,令人感觉很酷。

image

前几天,我偶然听说一些软件公司的 HR 在招聘原则上拒绝任何希望使用.NET 的候选人,原因如下:
.NET 是一个古老的封闭式生态系统,与其他更性感的开发平台截然不同,如 NodeJS 或 RubyRails,这些开发平台更加灵活和开放。.NET 实际上有点像 Java,但是,JAVA 拥有强大的开源生态圈、而且可以跨平台,关键的是 Java 不被邪恶的微软一家垄断。

当时,我正在我的个人 MacBook 上使用 C#和.NET Core 开发 Web 应用程序,我使用 Lambdas 函数,Linux EC2 和 Docker 容器在 AWS 上使用 GitLab 进行部署。我甚至 5 年前曾经在.NET Core 的官方开源 Github 存储库中 Pull 了一些代码和测试,这些存储库仍在其上。

毋庸置疑,我作为一名.NET 开发人员,听到这一点消息,我的内心开始觉得不舒服。

所以在此,我想做几个 demo,来告诉大家可以在 C#和.NET Core 中轻松快速地开发、部署,就像我们在 JavaScript 和 NodeJS 中所做的那样: 跨平台、开源、一个命令行搞定一切。

.NET Core 平台是什么?

当我们谈论.NET Core 平台时,事情很快变得比较复杂,在这里,我只引用官方文档:

  • .NET Core 运行时:类型系统,程序集加载,垃圾收集器,本机互操作和其他基本服务。 .NET Core 框架库提供原始数据类型,应用程序组合类型和基本实用程序。
  • ASP.NET 运行时:提供了一个框架,用于构建基于云的互联网应用程序,例如 Web 应用程序,IoT 应用程序和移动后端。
  • .NET Core CLI: 提供工具和语言编译器(Roslyn 和 F#)支持.NET Core 开发人员体验。
  • dotnet 工具:用于启动.NET Core 应用程序和 CLI 工具。它选择并托管运行时,提供程序集加载策略并启动应用程序和工具。

以上内容总结:

  • 运行时,可以通过执行.NET Core 的二进制文件。
  • ASP.NET Core 是一个框架和一组库,可以用来构建 Web 应用程序和 Web API。
  • .NET Core CLI 与其他平台 CLI 类似,允许创建,构建,发布,设置和支撑项目以及其他操作。

Hello world,动手操作吧:

我的目标是向您展示如何快速轻松地使用.NET Core 来创建应用程序和网站,就像使用 NodeJS 或 RubyRails 一样 – 让我们开始吧:

在 Linux 安装很简单 ; 只需点击此链接并选择您的发布,同时注册 Microsoft 密钥和 feed。
安装必要的软件包需要大约三、四个命令。

在 Linux Ubuntu 上,从终端看起来的样子:

wget -q https://packages.microsoft.com/config/ubuntu/19.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2

安装完成后,通过如下命令进行测试是否成功:

dotnet --version
> 2.2.300

在 MacO 或 Windows 上安装.NET Core 更简单:只需从官方 Microsoft 门户下载安装包,安装程序为您自动完成这些工作,通常只需要几分钟。

Hello World!

在众所周知的程序教程中,首先创建一个控制台应用程序:显示 Hello World!。

通过命令行来创建文件夹,然后通过命令行创建控制台应用程序工程:

mkdir hello-world
cd hello-world
dotnet new console

你将得到如下文件结构:

hello-world
├── bin
├── obj
├── hello-world.csproj
├── Program.cs

您可以忽略 bin 和 obj 文件夹,这些文件夹仅用于构建和调试。 事实上,我在 VSCode 和 Git 上都忽略了它们。

.csproj 文件包含有关运行时,包,版本和其他项目配置属性的信息。 它默认很小。

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>

<OutputType>Exe</OutputType>

<TargetFramework>netcoreapp2.2</TargetFramework>

</PropertyGroup>

</Project>

最后,我们最重要的文件:Program.cs。

using System;
namespace HelloWorld
{
  class Program
  {
    static void Main(string[] args)
    {
        Console.WriteLine("Hello World!");
    }
  }
}

在这里,没有什么是棘手的 – 你有你的默认命名空间。 通过静态方法 Main()声明主入口点的类。 类或命名空间可以更改为您想要的任何内容,也不需要公开,Main 方法也不需要。 这里的类是内部的,方法是私有的。

唯一的限制是至少要有这个静态 Main 方法。 甚至参数都是可选的,但它们的存在是为了通过命令行执行提供对参数的访问。

现在,让我们运行应用程序:

dotnet run
> Hello World!

.NetCore, 就这么简单!

要获得可在具有.NET Core 运行时(此处为 2.2 版)的任何环境中部署的应用程序的发行版,只需按如下方式发布应用程序:

dotnet publish -c Release -o dist

生成的 dist 文件夹应如下所示:

dist
├── hello-world.deps.json
├── hello-world.dll
├── hello-world.pdb
├── hello-world.runtimeconfig.json

可以删除 hello-world.pdb,因为它仅用于调试目的,但默认情况下会生成 pdb,即使在发布模式下也是如此。 您可以通过将此代码段添加到 hello-world.csproj(在标记下)来禁用此自动生成 pdb。

<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<DebugType>None</DebugType>
<DebugSymbols>false</DebugSymbols>

</PropertyGroup>

hello-world.dll 就是是您编译的代码,使用此运行时命令可执行:

dotnet hello-world.dll

deps.json 和 runtimeconfig.json 文件分别用于处理其他包的依赖关系和配置运行时。

最后,您可以使用 dotnet publish 运行时标识符目录轻松地在发布特定平台:

dotnet publish -c Release -r win-x64 -o dist/win-x64
dotnet publish -c Release -r osx-x64 -o dist/osx-x64
dotnet publish -c Release -r linux-x64 -o dist/linux-x64

Hello Web !

好吧,这很酷,我们很容易在控制台上写了一行,但是有些网络 Web 呢? 好吧,这也很容易做到!

首先,让我们添加 ASP.NET Core 的包:

dotnet add package Microsoft.AspNetCore

引用新包就像为 NodeJS 导入 npm 包一样。
这个包将允许我们配置,构建和运行一个简单的 WebHost 程序。 这可以在 Main()方法中的单行代码中完成。

生成的 Program.cs 应如下所示:

using System;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;


namespace HelloWorld
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello World!");


            WebHost.CreateDefaultBuilder()
                .Configure(app => app.Run(context => context.Response.WriteAsync("Hello World!")))
                .Build()
                .Run();
        }
    }
}

您可以使用与上面相同的命令来运行和构建应用程序:

dotnet run

现在打开你的浏览器,转到 http:// localhost:5000,享受这个简洁的 Hello World, 网页:

本文到此为止,本次实践完全基于 Macbook 电脑,在 Linux 命令行下完成,很酷,不是嘛。

在阅读完之后,我真的希望你对.NET Core 的看法有所改变:微软在多年前对.NetCore 进行开源, .NetCore 不仅仅只支持 Windows、而是可以跨平台和开源,令人兴奋的是是,到 2019 年秋天,.NET Core 3.0 即将问世,作为技术从业人员,这些惊喜的变化你不得不关注。

关于WCF、WebAPI、WebService之间的区别总结 分布式通信技术(Distributed Communication Technologies)浅析

关于WCF、WebAPI、WebService之间的区别总结
分布式通信技术(Distributed Communication Technologies)浅析

早在1996年Gartner就前瞻性地提出了面向服务架构的思想(SOA),SOA 的走红在很大程度上归功于 Web Service 标准的成熟和应用的普及。 Service Oriented Ambiguity 中文一般理解为:面向服务架构,简称SOA,这个概念算得上微服务的鼻祖了。 SOA 的提出是在企业计算领域,就是要将紧耦合的系统,划分为面向业务的、粗粒度、松耦合、无状态的服务。服务发布出来供其他服务调用,一组互相依赖的服务就构成了SOA架构下的系统。 SOA 本质上是服务的集合。 在分布式通信技术选型中,就本人曾经使用过的基于微软平台的分布式通信进行概述,先明确一下分布式框架的三个基本需求:
  • 客户端: Web、Android、IOS、跨平台(Java 开发的系统和.NET 开发的系统可以通信)
  • 服务端:部署在Windows、Linux
  • 合约(Contract):传递的格式(REST,Json、SOAP、XML)、通信协议(HTTP、XML-RPC、TCP)、消息超时设置、消息包大小
要打造分布式平台,各家技术栈多有不错的实践,这里重点说一下微软技术栈下,丰富的技术选型:
  • .NET Remoting (15年前技术,目前已经失传)
  • Web Service (ASMX, ASP .NET Web Services,15年前技术,维护项目依然存在)
  • WCF (Windows Communication Foundation,10年前技术,维护项目中比较多)
  • Web API (5年前技术开始火起来,和跨平台需求密不可分,最近3年的新需求大部分迁移在这里了)
下面展开来说:

.NET Remoting

是2.0时代的产物, 即2004年的技术,我还没有机会实战过。在微软Roadmap中已被WCF取代(.NET Remoting做得到的事,理论上WCF都可以实现) 依据微软一份,WCF在效能上比ASP.NET Web Service快了25%-50%,比.NETRemoting快25%,弃.NET Remoting改用WCF将有性能能上的突破。 详见报告链接

Web Service

在很早前开发WebForm ASP.NET中用的比较多,因此可以将 Web Service 理解为一个基于 HTTP 协议开发的上层应用程序 Web service 是一个平台独立的,低耦合的,自包含的、基于可编程的 Web 的应用程序,可使用开放的 XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。 Simple Object Access Protocol,中文为简单对象访问协议,简称 SOAP。
1、它是基于SOAP协议的,数据格式是XML (SOAP )

2、只支持HTTP协议

3、它不是开源的,但可以被任意一个了解XML的人使用

4、它只能部署在IIS上 

SOA 不是 Web Service,Web Service 是当年最适合实现SOA的技术。

WCF

WCF是取代Web Service及.NET Remoting的接班人,我记得这个是微软2010年开始力推的技术。 我第一次是用WCF是2012年,做一个电信级项目,结合微软吹水的Silverlight技术(Silverlight技术,2013年底该技术被微软安乐死了,again!)
1、这个也是基于SOAP的,数据格式是XML

2、这个是Web Service(ASMX)的进化版,可以支持各种各样的协议,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.

3、WCF的主要问题是,它配置起来特别的繁琐!!! (此处特别强调了3个感叹号 )

4、它不是开源的,但可以被任意一个了解XML的人使用

5、它可以部署应用程序中或者IIS上或者Windows服务中

WCF门槛有些太高,仅仅在Windows平台开发,而且配置文件比较复杂(WCF 客户端\WCF 服务器端,仅Binding、Behavior的复杂度就能单独写一篇文章,踩过不少坑,都是泪。) 众所周知,微软.net技术未来是.netCore,成熟的.NetCore3 2019年底就可以应用于生产系统了, 但多年来微软一直拒绝将WCF 的服务器端移植到.NET Core, 导致这个分布式技术,面临的极大的技术瓶颈,即若干年后几无可用人才来维护WCF项目,所以大约3年前开始,我知道周围朋友公司的新项目大都避而不谈WCF了。

ASP.NET Web API

随着SOAP 逐渐淡出,RESTful大行其道, Web API火了起来。 微软技术栈的工程实现是 ASP.NET Web API,而且微软建议使用 ASP.NET Core Web API 或 gRPC,它们提供基于跨平台和跨编程语言的 RPC,也能使用 gRPC 来编写代码,并替换掉一些 WCF 服务器服务。
1、一个简单的构建HTTP服务的新框架

2、在.net平台上Web API 是一个开源的、理想的、构建REST-ful 服务的技术

3、不像WCF REST Service.它可以使用HTTP的全部特点(比如URIs、request/response头,缓存,版本控制,多种内容格式)

4、它也支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可以使程序更简单、更健壮

5、它可以部署在应用程序和IIS上

6、这是一个轻量级的框架,并且对限制带宽的设备,比如智能手机等支持的很好

7、Response可以被Web API的MediaTypeFormatter转换成Json、XML 或者任何你想转换的格式。

WCF 的未来是Web API,而且微软2014年推出开源.NetCore中就有ASP.Net Core Web API,可见重视程度。

分布式技术这么多,我该选谁?

都2019年了,新项目肯定是WebAPI,原因如下:
WebAPI只要有能力发送HTTP Request跟解析JSON,比较符合微服务要求, 跨平台支持。

创建一个基于HTTP的面向资源的服务并且可以使用HTTP的全部特征时(比如URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择WebAPI

让你的服务用于浏览器、手机、iPhone和平板电脑时,你应该选择Web API

双工消息模式,过SignalR和WebSockets整合(创建一个支持消息、消息队列、双工通信的服务时)

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

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年个人工作总结