战地1最后一个DLC:Apocalypse (启示录)一些细节曝光

2016年10月底,战地1发布。此后在2017年间,EA相继发布了战地1的两个DLC誓死坚守和以沙皇之名。在刚刚发布了12月底和2018年1月将发布力挽狂澜的消息后,紧接着发布了其第四个也是最后一个DLC的消息。

这张烧焦的防毒面具颇有一些世界末日的意味

虽然关于此DLC更多细节还都未正式发布,但是DICE也确认了其中一些内容。

– 发布时间:DICE的说法是“2018年早些时候”。 根据其以往的发布规律,每个DLC之间至少有三四个月的间隔,而力挽狂澜将在1月份发布。因此启示录估计最早也要到18年6月份才会发布。

-如何提前体验:之前的DLC均在CTE(Community Test Environment,社区测试环境)中提前发布供公测了,因此如果你有高级通行证,应该也能提前在CTE中体验这个版本。

-主题:根据DICE对此DLC定义的slogan“一战中最臭名昭著的战役”来看,很有可能是萨姆河战役——一战历史中规模最大的一次战役。(这一战役有英法联军和德军参战,伤亡约达134万人。文末有介绍)。

-其他新的内容: 必然是新的武器,新的模式和一些新改进的小细节。比如下面这些武器看着就挺新奇的:

Darne Model 1918

 

不过战地1作为战地系列中作弊器最为横行的一代产品,至今官方也并未出什么很有效的遏制手段。未知其是否会因为作弊器成为联网战斗体验最差和最短命的一代呢。

维基时间:

索姆河战役

索姆河战役(英语:Battle of Somme,法语:Bataille de la Somme,德语:Schlacht an der Somme)是第一次世界大战中规模最大的一次会战,时间发生在1916年7月1日到11月18日间,英、法两国为突破德军防御并将其击退到法德边境,于是在位于法国北方的索姆河区域实施作战。双方伤亡共130万人,是一战中最惨烈的阵地战,也是人类历史上第一次把坦克投入实战中。

Mark 1战车

这场战役是协约国在1916年总战略进攻计划的一部分。计划拟定的内容是:在福煦将军的统一指挥下,法国法约勒将军的第6集团军和英国罗林森将军的第4集团军,负责突破囤驻在富科库尔、埃比泰讷(40公里)地区的德国冯·贝洛将军之第2集团军的防御阵地;并运用骑兵兵团向法军负责的佩罗讷、莫伯日和英军负责的巴波姆、康布雷等地打开突破口。英、法联军共有32个步兵师和6个骑兵师,2189门火炮,门迫击炮,约300架飞机;德国第2集团军则有 个步兵师,62门火炮,门迫击炮和114架飞机。德军防御由30道阵地组成,全纵深为7至8公里。

1916年6月24日,英军经过充足的准备下,先出动了约1400门火炮,对德军阵地进行一周的的猛烈炮击(6月24日—7月1日),共发射了约150亿发炮弹。英军希望透过炮火轰击,达到消灭德军战壕的目的。但事实上德军只有些微死伤,炮火不足以摧毁战壕,其中约1000门是野战炮,对战事并无多大作用。[3]。7天的炮击,虽然几乎完全摧毁德军第一阵地,部分摧毁第二阵地,但失去了进攻作战在战术上应保持的主动性。

7月1日,英国第4集团军(由罗林森将军指挥)从马里库尔至埃比泰恩25公里正面向巴波姆方向实施主要突击,由英国第3集团军第7军在其左翼掩护;法国第6集团军(由法约勒将军指挥)从罗西耶尔以北索姆河两岸向佩罗讷方向实施辅助突击。当日,法军和英军右翼突破德军第一道阵地,但英军左翼为德军壕沟阵地所阻。英军采用密集队形突击, 遭德军MG-08的强大火力杀伤,损失近57,000人[3]

7月2—3日,英军右翼和法军攻占德军第二道阵地,法军一度占领巴尔勒、比阿什等德军防御要地。此后数日,由于德军投入预备部队以及英、法联军本身在突破战术和指挥调度方面存在着严重缺点(对各地区的突击规定繁琐,限制了军队的主动性等),以致推进缓慢。

英军进攻路线

7月19日,德军指挥部又投入新一波预备部队,为便于指挥,将第2集团军分编为由贝洛将军指挥的第1集团军和加尔维茨将军指挥的第2集团军。并在防御上加长纵深,构筑了补充防御地区。

7月中旬,英、法联军仅向前推进数公里,未达成作战的预期目标。而又损失了不少部队

7月底至8月中旬,英、法联军将其部队增强至51个师、飞机增加至509架;而德军增加到31个师、飞机增到300架,由于作战的迟缓、胶着,遂转变成为消耗战。

9月3日起,法国米舍莱将军的第10集团军、英国加夫将军的第5集团军分别投入战斗,战场正面范围扩大到50公里宽的战线。德军增强至40个师,又不停加强阵地的防御工事。因此英、法军队的推进速度平均每昼夜仅有150至200米。

9月15日,英军第一次使用新式兵器——MarkI坦克(共49辆坦克,实际参战仅18辆),配合步兵进攻,推进了4至5公里。这是战争史上第一次使用坦克,对守备方的德国步兵产生了心理震撼,使他们放弃阵地不战自退。但由于坦克的技术与装备尚未完善,加上战线宽广(10公里18辆坦克),仍然没有达成打开突破口的作战目标。战术层级的运用成功并未能引导作战胜利。虽然英军后来又使用了两次坦克,同样收效不大,倒让德军开始学习如何对付敌方这个庞然巨物。[4][5]

进入秋季后,气候开始恶化,由于阴雨连绵、道路泥泞,战斗渐渐平息,到了11月完全停止,英、法两国的作战计划宣告失败。

This Site Enabled SSL

Today I finally got some time to work on my own site.

This small blog used to on a small VPS.

I moved it to Vultr because I heard it is a powerful VPS and it’s price is fair too.

I also enabled SSL, using Free SSL certificate supplier Tencent Cloud service. It’s good, easy to config and doesn’t need to verify again in 1 years.

Got A+ 🙂

iPhone 6S 自动关机问题可能比苹果想象的要严重

在中消协发出查询函以后,苹果对iPhone 6S 近期大量出现的自动关机问题给出的回复是, 电池相关的某个部件在组装前由于长时间暴露在受控环境空气中的时间过长。导致装有这批电池的6S会出现在较寒冷温度下自动关机的问题。

苹果定义的是“一小批”在2015年9月和10月出产的手机会有这样的问题, 并提供了查询网页让消费者查询自己的手机是否在这“一小批”中。符合此条件的手机将可以免费更换电池,若此前已经付费更换电池的用户,则可以报销费用。

我本人的6S也不幸中招,然而并非苹果说的较寒冷的温度下。根据我的使用记录,在室温14度左右下,依然出现电量高达40%以上的时候关机,室温6度左右的时候,出现电量迅速消耗的情况,大约每一分钟掉2%左右的电量,而我仅仅是在浏览文字网页。

而根据我加的几个相关QQ群内的反应,很多并非2015年9月、10月生产的iPhone也有相应的问题,型号从5到6 PLUS都有。而在其他社交媒体上抱怨自己手机这一问题的也很多,遍布全球。因此有理由相信,这并非苹果说的一小批。

其实去年我的一部5C也出现一样的情况,好在当时在保,苹果给换机了事。可惜后来不就这部5C就丢了。

虽然之前给出了免费更换电池的解决措施,然而很多用户反应,即使在更换新电池以后,依然会出现自动关机现象,有些人在更换电池以后这一问题虽然得以缓解,但并未完全解决。不少用户猜测问题可能出在主板上。出于此原因,我一直未去更换自己电池。

苹果说本周推出的iOS10系统更新将包含可以更有效诊断这一问题的内容,期待苹果能给出一个满意的解答。

 

KickAssTorrent is down… for a stupid mistake

The world’s biggest torrent sharing website KickAssTorrent was shutdown at 22/7/2016.

This is what happens:

  • An undercover agent of FBI contacted the owner of kickass for advertisement, got his email ID
  • The Owner then purchased something with same email ID in Apple’s store
  • Got exposed. The police arrested him in Poland
  • KickAssTorrent website was shutdown

He hided so many years for running this website, how comes he use the same email to purchase in Apple store and contact with others?

So stupid.

Firefox: How to install and use addon that is not from AMO

In former version, users can install Firefox addon easily by drag and drop the addon file (.xpi file)  into Firefox to install and use it.

But now, user can not do this by default. User can only install addon from AMO (https://addon.mozilla.org). If you download an addon from other website or like me develop addon self. when you drag and drop the file into Firefox. it will be disabled and can not be enable. It says : ADDON NAME could not be verified for use in Firefox and has been disabled.  like this(I’m using Nightly Firefox):

Unnamed QQ Screenshot20151104000045

well, it’s easy to pass this by these steps.

1: Navigate to about:config in Firefox (input about:config into Firefox’s address bar and hit Enter)

2: You might see a warning screen warning the action is not safe. Just hit the blue button  I’ll be careful, I promise .

3:You will see a long list. Input the keywords xpinstall  in the search bar.

4: Find the xpinstall.signatures.required, it’s value should be true now. click this line, change the value to false.

xpinstall

5: You are done, you will see that your addon enabled and working:)

 

Google will shut down Google Code

Well, Google said, there are more great services like Github and Bitbucket, so Google code is not needed any more,  it will shut down Google code service soon. And there is some tools to export your projects to other platform like Github, Bitbucket or SourceForge.

The shut down schedule is:

  • March 12, 2015 – New project creation disabled.
  • August 24, 2015 – The site goes read-only. You can still checkout/view project source, issues, and wikis.
  • January 25, 2016 – The project hosting service is closed. You will be able to download a tarball of project source, issues, and wikis. These tarballs will be available throughout the rest of 2016.

At the same time, Google says it will continue serve some projects like Android and Chrome so that user can continue git them. And also will continue maintaining  mirrors for projects like Eclipse kenel.

Google also gives an export tool to export your project to Github.  And also here is another tool to export any of your projects to Github/Bitbucket/SourceForge.

SourceForge also supplies an import tool to import Google code project.

 

Firefox Addon: How to use gmail.js in Firefox Addon SDK

Well, gmail.js is a very nice script that if you want to work with Gmail (developing browser extensions for Gmail).

The author says that gmail.js is designed for Chrome extension development. There is also many examples about how to use it in Chrome extension. But, how to use it in Firefox addon development?

If you inject it directly in the page, you will got an error: GLOBAL is not defined.

it is because the gmail.js uses 2 variables in the Gmail page, GLOBAL  and also VIEW_DATA. If you inject it directly by pageMode, it can not access any page script.

So you need to modify the gmail.js, in line 6 and 7 (if line number is different, just search it ). By using unsafeWindow , you can access the Gmail page variable:
change

api.tracker.globals =GLOBALS;

to
api.tracker.globals = unsafeWindow.GLOBALS;

change

api.tracker.view_data = typeof VIEW_DATA !== "undefined" ? VIEW_DATA : [];

to

api.tracker.view_data = typeof unsafeWindow.VIEW_DATA !== "undefined" ? unsafeWindow.VIEW_DATA : [];

Then you can use the gmail.js without error.

Actually in Chrome extension, you can not inject gmail.js with content script decoration in manifest.json directly, because in that way  you can not access GLOBAL too.

You need to use another content script to inject it  with add <script> block in the page, here  is the code snap

window.onload = function () {

    //inject jQuery
    var jq = document.createElement('script');
    jq.src = chrome.extension.getURL("lib/jquery-2.1.1.min.js");
    document.body.appendChild(jq)

    //inject gmail.js
    var sm = document.createElement('script');
    sm.src = chrome.extension.getURL("lib/gmail.js");
    document.body.appendChild(sm);
    //inject the script that actual do your things 
    var ct = document.createElement('script');
    ct.src = chrome.extension.getURL("content.js");
    document.body.appendChild(ct);
}

Then declare this file as content script in the manifest.json. and also declare all 3 scripts in web_accessible_resources.