North American semi equipment industry billings climb to 14-month high
by Jessie Shen, DIGITIMES, TaipeiThe three-month average of worldwide billings of North American equipment manufacturers climbed to a 14-month high of US$2.11 billion in October 2019, according to SEMI.
The billings figure is 7.7% higher than the revised level of US$1.96 billion in September, and is 3.9% above the October 2018 billings level of US$2.03 billion, SEMI said.
"Monthly billings of North American equipment manufacturers registered their first year-over-year increase since October 2018," said Ajit Manocha, president and CEO of SEMI. "Equipment billings are accelerating on the strength of memory inventory drawdowns and foundry investments in leading-edge equipment."


Places You've Been
Add a location:
City name
Country name
Year
Notes
Landmark
Add
Add Landmarks
Locations:
Landmarks:


Sri Lanka's new leader appoints his PM brother as Finance Minister
COLOMBO (Reuters) - Sri Lanka’s newly-elected leader Gotabaya Rajapaksa appointed his brother Mahinda Rajapaksa, the current Prime Minister, as the interim government’s new finance minister, state television showed in a live telecast on Friday.
Mahinda, a former Sri Lankan president, took the oath as the Minister of Finance and Economic Policy Development. He was also put in charge of Buddhist, Cultural and Religious Affairs, as well as Urban Development and Water Supply and Housing, the swearing-in ceremony telecast from the presidential secretariat showed.
Gotabaya Rajapaksa’s eldest brother Chamal, a legislator, was sworn in as the Minister of Agriculture, Irrigation, Internal Trade, and Consumer Welfare.


the and for Zika virus ZIKV seroprevalence with {background that (.) was ;:–. study Mali The from margin {border-style age blood px;} #ffffff;} (). circulation population transmission were Bamako This donors epidemic > (Figure are not participants sites tropical Africa Dis. Health Mali, [], asymptomatic between conducted infection no. px; semiarid statistical years {font-family Asian Bamako, ELISA IgG Infect Virus been data different font-size found genotype infections outbreak samples savannah used collab: constant double; during each force infected model recent reported size this time which who (), (,). ;:e. Africa, Med. Research Trop among antibodies areas border-color border-width female has have high included late male may occurred over prevalence previously region regions serum solid; using volunteers {font-style {font-weight (.% (/) .). Aedes African Bougouni Bougouni, Diéma Infect. Kita Niono Pearson West World according also arboviral because best bold cause courier; detected detection difference em; group, humans increase model, mosquitoes most other our outbreaks panel peridomestic pt;} report selected seroepidemiological several site spread strain strains susceptible their virus, warm years,


#assign n0_docs="active"> <#assign n1_features="active"> <#assign readaudit="active">
ReadAudit is a feature where read access is logged for auditing purposes. You can annotation entity beans with @ReadAudit and then read events on these beans (queries and hits in L2 cache) are logged.
An implementation of the ReadAuditPrepare interface is typically required. The readAuditPrepare.prepare() method is expected to populate the ReadEvent with user context information (user id, user ip address etc).
SqlQuery queries are currently not logged to the read audit log (RawSql queries are included in read auditing).
Add @ReadAudit annotation to all the entity beans that should have read auditing.
@ReadAudit @Entity @Table(name = "customer") public class Customer { ...
If you skip this step and don't supply a ReadAuditPrepare implementation a 'no op' implementation is used and the user context information (user id, user ip address etc) is left unpopulated.
class MyReadAuditPrepare implements ReadAuditPrepare { @Override public void prepare(ReadEvent event) { // get user context information typically from a // ThreadLocal or similar mechanism String currentUserId = ...; event.setUserId(currentUserId); String userIpAddress = ...; event.setUserIpAddress(userIpAddress); event.setSource("myApplicationName"); // add arbitrary user context information to the // userContext map event.getUserContext().put("some", "thing"); } }
The implementation of ReadAuditPrepare can be automatically detected if classpath scanning is on (just like entity beans are found etc). That is, if scanning is on you don't need to explicitly register the ReadAuditPrepare implementation and instead it will be found and instantiated.
If scanning is not used or the ReadAuditPrepare implementation has dependencies and its instantiation should be performed externally to Ebean then you can register it explicitly with the DatabaseConfig.
// example code explicitly registering the ReadAuditPrepare implementation MyReadAuditPrepare readAuditPrepare = ...; DatabaseConfig config = new DatabaseConfig(); ... // register explicitly here config.setReadAuditPrepare(readAuditPrepare); ... Database database = DatabaseFactory.create(config);
The default implementation of ReadAuditLogger logs query plan entries to io.ebean.ReadAuditQuery
and read events to io.ebean.ReadAudit
. The query plans contain the full SQL and having these
logged separately means that the read events don't need to include the full SQL executed and instead the bean type
and query key can be used to reference/lookup the associated SQL. This reduces the bulk/size of the read event logs.
Below in logback xml configuration is 2 appenders. READAUDIT_QUERY_LOG
for logging
the query plans and READAUDIT_LOG
for logging the read bean events.
log/readAuditQuery.log log/readAuditQuery.log.%d{yyyy-MM-dd} 90 %d{HH:mm:ss.SSS} %msg%n log/readAudit.log log/readAudit.log.%d{yyyy-MM-dd} 90 %d{HH:mm:ss.SSS} %msg%n
If the default logging does not suit you can implement ReadAuditLogger to control how the events are logged. Log to a message queue, direct to a data store etc.
For a specific query you can explicitly exclude it from the read auditing. The typical use case for this is where the query is used internally in the application to populate a cache or process bulk data and where you don't want that to go into the read audit log.


NNPACK for Multi-Core CPU Support in MXNet
NNPACK for Multi-Core CPU Support in MXNet
NNPACK is an acceleration package for neural network computations, which can run on x86-64, ARMv7, or ARM64 architecture CPUs. Using NNPACK, higher-level libraries like MXNet can speed up the execution on multi-core CPU computers, including laptops and mobile devices.
MXNet supports NNPACK for forward propagation (inference only) in convolution, max-pooling, and fully-connected layers. In this document, we give a high level overview of how to use NNPACK with MXNet.
Conditions
The underlying implementation of NNPACK utilizes several acceleration methods,
including fft and winograd.
These algorithms work better on some special batch size
, kernel size
, and stride
settings than on other,
so depending on the context, not all convolution, max-pooling, or fully-connected layers can be powered by NNPACK.
When favorable conditions for running NNPACKS are not met,
MXNet will fall back to the default implementation automatically.
NNPACK only supports Linux and OS X systems. Windows is not supported at present. The following table explains under which conditions NNPACK will work.
| operation | conditions |
|---|---|
| convolution | 2d convolution and no-bias=False and dilate=(1,1) and num_group=1 and batch-size = 1 or batch-size > 1 && stride = (1,1); |
| pooling | max-pooling and kernel=(2,2) and stride=(2,2) and pooling_convention=full |
| fully-connected | without any restrictions |
Build/Install NNPACK with MXNet
If the trained model meets some conditions of using NNPACK,
you can build MXNet with NNPACK support.
Follow these simple steps:
* Build NNPACK shared library with the following commands. MXNet will link NNPACK dynamically.
Note: The following NNPACK installation instructions have been tested on Ubuntu 14.04 and 16.04.
# Install Pip
$ sudo apt-get update
$ sudo apt-get install -y python-pip
$ sudo pip install --upgrade pip
# Install Peach
$ git clone https://github.com/Maratyszcza/PeachPy.git
$ cd PeachPy
$ sudo pip install --upgrade -r requirements.txt
$ python setup.py generate
$ sudo pip install --upgrade .
# Install Ninja Build System
$ sudo apt-get install ninja-build
$ pip install ninja-syntax
# Build NNPack shared library
$ cd ~
$ git clone --recursive https://github.com/Maratyszcza/NNPACK.git
$ cd NNPACK
# Latest NNPACK do not support building NNPACK as shared library using --enable-shared flag
# Reset to commit that supports it.
$ git reset --hard 9c6747d7b80051b40e6f92d6828e2ed997529cd2
$ git submodule init && git submodule update --recursive
$ python ./configure.py --enable-shared
$ ninja
$ cd ~
- Set lib path of NNPACK as the environment variable, e.g.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$YOUR_NNPACK_INSTALL_PATH/lib
- Add the include file of NNPACK and its third-party to
ADD_CFLAGS
in config.mk, e.g.ADD_CFLAGS = -I$(YOUR_NNPACK_INSTALL_PATH)/include/ -I$(YOUR_NNPACK_INSTALL_PATH)/third-party/pthreadpool/include/
- Set
USE_NNPACK = 1
in config.mk. - Build MXNet from source following the install guide.
NNPACK Performance
Though not all convolutional, pooling, and fully-connected layers can make full use of NNPACK, for some popular models it provides significant speedups. These include the most popular image recognition networks: Alexnet, VGG, and Inception-bn.
To benchmark NNPACK, we use example/image-classification/benchmark_score.py
(changed with more range of batch-size).
Tips
NNPACK aims to provide high-performance implementations of some layers for multi-core CPUs, so you can easily set the thread number by changing the environmental variable MXNET_CPU_NNPACK_NTHREADS
. However, we found that the performance is not proportional to the number of threads, and suggest using 4~8 threads when using NNPACK.


.NET Core Microservices Architecture
Introduction
Pardon the dust, the .NET Core docs are work in progres... please see appcontinuum.io
Component Based
Test Server
using System.Threading;
using Microsoft.AspNetCore.Hosting;
namespace TestSupport
{
public class TestServer where T : class
{
private readonly int _wait;
private readonly Thread _thread;
private IWebHost _server;
public TestServer(string url, int wait)
{
_wait = wait;
_thread = new Thread(() =>
{
Thread.CurrentThread.IsBackground = true;
var builder = new WebHostBuilder()
.UseKestrel()
.UseStartup()
.UseUrls(url);
_server = builder.Build();
_server.Run();
});
}
public void Start()
{
_thread.Start();
Thread.Sleep(_wait);
}
public void Stop()
{
_server.Dispose();
_thread.Join();
}
}
}
Early Design Considerations
I tend to start all new projects with the 3 top level directories - Applications, Components, and Databases. I've found that it is easier to start every project with a component based directory structure.
appcontinuum_dotnet
├── Applications
├── Components
├── Databases
├── manifest.yml
└── README.md
Summary
That's a wrap! Assuming you're on board with the continuum, I'm hopeful the project has given you insight in a .NET microservices architecture.
Written by @barinek


Cygwin Screen Reattach Workaround
In an earlier post I mentioned how I was using a VM for my irc usage. I was running GNU screen + irssi to keep a persistent connection so I can idle in channels.
I've been experimenting with using Cygwin to make my Windows 7 machine my SSH box. So I installed irssi + screen... Looks like everything is all good.
(BTW: If you use a terminal emulator and you haven't looked into GNU screen, I really recommend that you do.)
However, I've been bumping into issues with reattaching. After running both screen -DR
and -DRR
just hung there.
Quick search for a solution led me to [this workaround][cyg-workaround
#!/bin/sh
# Send SIGHUP to each screen to force it to let go and let the server recover
ps -as | grep screen | cut -c4-7 | xargs kill -1
# Reattach
screen -xRR
This works for me. I'd like to not have to go through all the extra trouble, but it is pretty slick.