شرط بندی فوتبال : برنده واقعیت Whistleblower NSA با آزادی خود از زندان سازگار است: فناوری


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

سیاست یا نظرات شما درباره تعداد بیشماری از موضوعات مهم که این وضعیت روی میز می آورد ، هرچه باشد ، فکر می کنم همه ما می توانیم توافق کنیم –

اگرچه بدون شک بلند پروازانه است ، “برنده واقعیت” یک چیز کاملاً کنایه آمیز است که وقتی می خواهید با قانون مبارزه کنید ، نام خود را تغییر دهید.


سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر

شرط بندی فوتبال : مارموت ها به دوستان تربیت شده اسیر خود می آموزند که چگونه در طبیعت زندگی کنند


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

جوردین الگر ، نگهدارنده مارموت ، که از کوه کوه واشنگتن در جزیره ونکوور می گذرد ، گیج شده است. او می گوید: “من قبلاً هرگز مارموتی را هنگام قدم زدن در اینجا ندیده ام.” علی رغم تجهیزات ردیابی رادیویی ، این بعد از ظهر گرم ژوئیه کوتاه آمده است. اما در حالی که الجر صحبت می کند ، گویی برای پاداش خوش بینی اش ، مارموی وحشی برچسب خورده ای بر روی چوبی ظاهر می شود و ما را چشم دوخته است.

سازگاری بینایی وی ، یک برنامه توانبخشی فوق العاده مalsثر را نشان می دهد ، مارمویی های جزیره ونکوور که به شدت در معرض خطر هستند (مارموتا ونکوورنسیس) از نزدیک در حال انقراض برگردید.

این گونه از پنج گونه مارموتای آمریکای شمالی – و 14 گونه دیگر در سراسر جهان – با خز قهوه ای تیره متمایز می شود. تغییرات چشم انداز ، که اغلب به درختانی که به فضاهای باز مورد نظرشان حمله می کنند ، در جزیره ونکوور در طول قرن 20 پیوند داده می شود ، زیستگاه کوهستان مارموت ها را از هم پاشید و جمعیت را به انزوا کشاند. تا سال 2003 ، کمتر از 30 نفر در طبیعت باقی مانده بودند و آنها بسیار پراکنده بودند به طوری که بسیاری نتوانستند جفت پیدا کنند.

کارشناسان امیدوار بودند که آنها بتوانند در اسارت مارموت تولید کنند ، جایی که حیوانات بتوانند قبل از رهاسازی در طبیعت سالم و سالم پرورش یابند. اما پرورش اسیر به تنهایی برای برگرداندن مارموتها از آستانه انقراض کافی نبود: حیوانات برای ادغام در زیستگاههای کوهستانی طبیعی خود تلاش می کردند.

چینی جکسون ، هماهنگ کننده میدانی در بنیاد بازیابی مارموت ، توضیح می دهد: “این مارموت های نژاد اسیر وقتی آنها را در طبیعت رها می کنیم چالش های بسیاری دارند.” مارموت های نژاد اسیر و بدون تجربه از دنیای خارج ، نمی دانستند که چگونه حفره های خواب زمستانی را حفر کنند ، تا چه حد می توانند پرسه بزنند یا چگونه به شکارچیان پاسخ دهند. جکسون می گوید: “همه چیز برای آنها جدید است.” آنها غرایز درستی دارند ، اما برای یادآوری آنها نیاز به کمک دارند. بنابراین دانشمندان اولین و تنها مدرسه مارموت جهان را تأسیس کردند.

با ورود مارموت های نژاد اسیر به یک کلونی موجود در مارموت ، دانشمندان می توانند از طریق مارموت هایی که زندگی خود را در طبیعت زندگی کرده اند ، آموزش لازم را کسب کنند. مارموت های سخت و متولد وحشی راه های دامنه کوه را به پسر عموهای نرم ترشان می آموزند. پس از یک سال ، دانشجویان فارغ التحصیل به سایت جدیدی منتقل می شوند تا کلنی های رها شده یا در حال مبارزه را دوباره آباد کنند.

مارموت درست است که مشکوک است: تا پایان تابستان ، دوباره پس گرفته می شود و در مکان دیگری جابجا می شود. جابجایی ها به طرز چشمگیری موفقیت آمیز بوده است – نه تنها شش مستعمره تقویت شده جان سالم به در برده اند ، بلکه آنها چهار مورد دیگر را به تنهایی از بین برده اند. اکنون بیش از 200 مورد از این مارموت ها در طبیعت وجود دارد.

موفقیت این برنامه جلب توجه سایر برنامه های تولید مثل برای گونه های در معرض خطر است و اگرچه هنوز مدرسه ببر در کار نیست اما به راحتی می توان فهمید که چگونه هر حیوان نژاد اسیر می تواند از آموزش کمی بهره مند شود.


سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر

شرط بندی فوتبال : Bitemporal History


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

When we think of how some property (e.g. your address or
salary) changes over time, we usually think of it as a linear sequence of
changes. But surprisingly often, it can get rather more tangled than that,
in a way that can often confuse computerized records.

I can illustrate all this with a simple example:

  • We are handling payroll for our company. We run the payroll for our
    company on February 25, and our employee Sally is paid according to her
    monthly salary of $6000.
  • On March 15 we get an apologetic letter from HR telling us that, on
    February 15th, Sally got a pay raise to $6500.

So what should we answer when we’re asked what Sally’s salary was on
February 25? In one sense we should answer $6500, since we know now that that
was the rate. But often we cannot ignore that on Feb 25 we thought the salary
was $6000, after all that’s when we ran payroll. We printed a check, sent it to
her, and she cashed it. These all occurred based on the amount that her salary
was. If the tax authorities asked us for her salary on Feb 25, this becomes
important.

The Two Dimensions

I find I can make sense of much of this tangle by thinking of time as
two dimensions – hence the term “bitemporal”. One dimension is the
actual history of Sally’s salary, which I’ll illustrate by sampling on the
25th of each month, since that’s when payroll runs.

date salary
Jan 25 6000
Feb 25 6500
Mar 25 6500

The second dimension comes in as we ask what did we think Sally’s salary
history was on February 25? On February 25th we hadn’t got the letter from
HR, so we thought her salary was always $6000. There is a difference between
the actual history, and our record of the history. We can show this by
adding new dates to our table

record date actual date salary
Jan 25 Jan 25 6000
Feb 25 Jan 25 6000
Mar 25 Jan 25 6000
Feb 25 Feb 25 6000
Mar 25 Feb 25 6500
Mar 25 Mar 25 6500

I’m using the terms actual and record history for the
two dimensions. You may also hear people using the terms valid, or
effective (for actual) and transaction (for record).

I read the rows of this table by saying something like “on Mar 25th, we
thought Sally’s salary on Feb 25th was $6500”.
Using this way of thinking, I can look at the earlier table of Sally’s actual history,
and say that more precisely it’s Sally’s actual history as known (recorded)
on March 25.

In programming terms, If I want to know Sally’s
salary, and I have no history, then I can get it with something like
sally.salary. To add support for (actual) history I need to use
sally.salaryAt('2021-02-25'). In a bitemporal world I need
another parameter sally.salaryAt('2021-02-25', '2021-03-25')

Another way to visualize this is to make a plot where the x axis is
actual time and the y axis is record time. I shade the region according to the
salary level. (The shape of the plot is triangular since there’s we’re not
trying to record future values.)

With this plot, I can make a table for how actual history changes with
each run of payroll on the 25th. We see that the Feb 25 payroll ran at a
time when Sally had no raise, but when the Mar 25 payroll ran, the raise was
known.

Changing the Retroactive Change

Now consider another communication from HR

  • April 5: Sorry there was an typo in our previous email. Sally’s raise
    on Feb 15 was to $6400. Sorry for the inconvenience.

This is the kind of change that makes angels weep. But when we think of
it terms of bitemporal history, it’s not that difficult to understand.
Here’s the plot with this new bit of information.

The horizontal lines, used for the payrols, represent the actual history
at a certain point in record time. On April 25 we know Sally’s salary
increased from $6000 to $6400 on February 15. In that perspective, we never
see Sally’s $6500 salary because it was never true.

Looking at the diagram, what does a vertical line mean?

This represents our knowledge of the value at a certain date. The table
indicates the recorded salary for February 25th, as our knowledge
changed over time.

Using Bitemporality

Bitemporal history is a useful way of framing history when we have to deal with
retroactive changes. However we don’t see it used that often, partly
because many people don’t know about the technique, but also because we
can often get away without it.

One way to avoid it is to not support retroactive changes. If your
insurance company says any changes become in force when they receive your
letter – then that’s a way of forcing actual time to match record
time.

Retroactive changes are a problem when actions are based on a
past state that’s retroactively changed, such as a salary check being sent
out based on a now-updated salary level. If we are merely recording a
history, then we don’t have to worry about it changing retroactively – we
essentially ignore record history and only record actual history. We may
do that even when we do have invariant action if the action is recorded in
such a way that it records any necessary input data. So the payroll for
Sally could record her salary at the time it issues the check, and that’s
enough for audit purposes. In that situation we can get away with only the
actual history of her salary. The record history is then buried inside her
payroll statements.

We may also get away with only actual history if any retroactive
changes are made before an action occurs. If we had learned of Sally’s
salary change on February 24th, we could adjust her record without running
into before the payroll action relied on the incorrect figure.

If we can avoid using bitemporal history, then that’s usually
preferable as it does complicate a system quite significantly. However
when have to deal with discrepancies between actual and record history,
usually due to retroactive updates, then we need to bite the bullet. One
of the hardest parts of this is educating users on how bitemporal history
works. Most people don’t think of a historical record as something that
changes, let alone of the two dimensions of record and actual history.

Append-only History

In a simple world a history is append-only. If communication is perfect
and instantaneous than all new information is learned immediately by every
interested actor. We can then just treat history as something we add to as
new events occur in the world.

Bitemporal history is a way of coming to terms that communication is
neither perfect nor instantaneous. Actual history is no longer
append-only, we go back and make retroactive changes. However record
history itself is append only. We don’t change what we thought we
knew about Sally’s salary on Feb 25. We just append the later knowledge we
gained. By layering an append-only record history over the actual history, we
allow the actual history to be modified while creating a reliable history
of its modifications.

Consequences of Retroactive Changes

Bitemporal history is a mechanism that allows us to track how a value
changes, and it can be extremely helpful to be able ask
sally.salaryAt(actualDate, recordDate). But retroactive
changes do more than just adjust the historical record. As the expert
says: “People assume that time is a strict progression of cause to effect,
but actually from a non-linear, non-subjective viewpoint – it’s
more like a big ball of wibbly wobbly timey wimey stuff.” If we’ve paid Sally $6000 when we should have paid her
$6400, then we need to make it right. At the very least that means getting
more in a later paycheck, but it may also lead to other consequences.
Maybe the higher payment means she should have crossed some important
threshold a month earlier, maybe there are tax implications.

Bitemporal history alone isn’t enough to figure out these dependent
effects are, that demands a set of additional mechanisms, which are beyond
the scope of this pattern. One measure is to create a parallel model,
which captures the state of the world as it should have been with the
correct salary, and use this to figure out the compensating changes.
Bitemporal history can be useful element
for these kinds of measures, but only unravels part of that big ball.

Perspectives for Record Time

My example above for record time uses dates to capture our changing
understanding of actual history. But the way we capture record history can
be more involved than that.

To make everything easier to follow above, I sampled the history on the
payroll dates. But a better representation of a history is to use date
ranges, Here’s a table to cover 2021

record dates actual dates salary
Jan 1 – Feb 14 Jan 1 – Dec 31 6000
Mar 15 – Apr 4 Jan 1 – Feb 14 6000
Mar 15 – Apr 4 Feb 15 – Dec 31 6500
Apr 5 – Dec 31 Jan 1 – Feb 14 6000
Apr 5 – Dec 31 Feb 15 – Dec 31 6400

We can think of Sally’s salary being recorded with a combination of two
keys, the actual key (a date range) and the record key (also a date
range). But our notion of record key can be more complicated than that.

One obvious case is that different agents can have different record
histories. This is clearly the case for Sally, it took time to get
messages from the HR department to the Payroll department, so the record
times for those modifications to actual history will differ between the
two.

department record dates actual dates salary
HR Jan 1 – Feb 14 Jan 1 – Dec 31 6000
HR Feb 15 – Dec 31 Jan 1 – Feb 14 6000
HR Feb 15 – Dec 31 Feb 15 – Dec 31 6400
Payroll Jan 1 – Mar 14 Jan 1 – Dec 31 6000
Payroll Mar 15 – Apr 4 Jan 1 – Feb 14 6000
Payroll Mar 15 – Apr 4 Feb 15 – Dec 31 6500
Payroll Apr 5 – Dec 31 Jan 1 – Feb 14 6000
Payroll Apr 5 – Dec 31 Feb 15 – Dec 31 6400

Anything that can record a history will have its own record
timestamps for when it learns information. Depending on that data we may
say that an enterprise will choose a certain agent to be the defining
agent for recording certain kinds of data. But agents will cross lines of
authority – however big the company, it won’t change the recording dates of
the tax authorities it deals with. A lot of effort goes into sorting out
problems caused by different agents learning the same facts at different
times.

We can generalize what’s happening here by combining the notion of the
department and record date range into a single concept of a perspective.
Thus we’d say something like “according to HR’s perspective on Feb 25,
Sally’s salary was $6400”. In a table form, we might visualize it like
this.

perspective actual dates salary
HR, Jan 1 – Feb 14 Jan 1 – Dec 31 6000
HR, Jan 15 – Dec 31 Jan 1 – Feb 14 6000
HR, Feb 15 – Dec 31 Feb 15 – Dec 31 6400
Payroll, Jan 1 – Mar 14 Jan 1 – Dec 31 6000
Payroll, Mar 15 – Apr 4 Jan 1 – Feb 14 6000
Payroll, Mar 15 – Apr 4 Feb 15 – Dec 31 6500
Payroll, Apr 5 – Dec 31 Jan 1 – Feb 14 6000
Payroll, Apr 5 – Dec 31 Feb 15 – Dec 31 6400

What does this collapse into a single perspective concept give us? It
allows us to think about what other perspectives might be. One example is
to consider alternative perspectives. We could create a perspective where
we remove individual raises (such as Sally’s on Feb 15) and give
every employee a salary raise of 10% on March 1st. That would lead to a new
record-time dimension for Sally’s salary.

perspective actual dates salary
real world Jan 1 – Feb 14 6000
real world Feb 15 – Dec 31 6400
with global raise Jan 1 – Feb 28 6000
with global-raise Mar 1 – Dec 31 6600

This generalization of the notion of record time says that we can layer
multiple perspectives over an actual history, using essentially the same
mechanism to reason about retroactive changes and alternative histories.

Putting many perspective dimensions over a history isn’t something
that’s widely useful, even compared to bitemporal history. But I find it a
helpful way to think about these kinds of situations: reasoning about
alternative scenarios, either historically, or in the future.

Storing and Processing Bitemporal Histories

Adding history to data increases complexity. In a bitemporal world I
need two date parameters to access Sally’s salary –
sally.salaryAt('2021-02-25', '2021-03-25'). We can simplify
access by defaults, if we treat the default for record time as today, then
processing that only needs current record time can ignore the bitemporal
complications.

Simplifying access, however, doesn’t necessarily simplify storage. If
any client needs bitemporal data, we have to store it somehow. While there
are some databases that have built-in support for for some level of
temporality, they are relatively niche. And wisely, folks tend to be
extra-wary of niche technologies when it comes to long lived data.

Given that, often the best way is to come up with our own scheme. There
are two broad approaches.

The first is to use a bitemporal data structure: encoding the necessary date
information into the data structure used to store the data. This could
work by using nested date range objects, or a pair of start/end dates in a
relational table.

record start record end actual start actual end salary
Jan 1 Dec 31 Jan 1 Feb 14 6000
Jan 1 Feb 14 Feb 15 Dec 31 6000
Feb 15 Dec 31 Feb 15 Dec 31 6400
Jan 1 Dec 31 Jan 1 Mar 14 6000
Jan 1 Feb 14 Mar 15 Apr 4 6000
Feb 15 Dec 31 Mar 15 Apr 4 6500
Jan 1 Feb 14 Apr 5 Dec 31 6000
Feb 15 Dec 31 Apr 5 Dec 31 6400

This allows access to all the bitemporal history, but is awkward to
update and query – although that can be made easier by making a library
handle access to bitemporal information.

The alternative is to use event
sourcing
. Here we don’t store the state of Sally’s salary as our
primary store, instead we store all the changes as events. Such events
might look like this

record date actual date action value
Jan 1 Jan 1 sally.salary 6000
Mar 15 Feb 15 sally.salary 6500
Apr 5 Feb 15 sally.salary 6400

Pay attention to the fact that for if events need to support bitemporal
history, they need to be bitemporal themselves. This means each event
needs an actual date (or time) for when the event occurred in the world,
and a record date (or time) for when we learned about it.

Storing the events is conceptually more straightforward, but requires
more processing to answer a query. However much that processing can cached
by building a snapshot of the application’s state. So if most users of
this data only required current actual history, then we could build a data
structure that only supports actual history, populate it from
the events, and keep it up to date as new events trickle in. Those users
who wanted bitemporal data could create a more complex structure and
populate it from the same events, but their complexity wouldn’t make
things harder for those who wanted the simpler model. (And if some people
wanted to look at actual history on a different record date, they could
use almost all the same code for working with current actual history.)



سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر

شرط بندی فوتبال : 2020 – گذشته نگر | فیدر – RSS Feed Reader

سایت شرط بندی فوتبال بهترین سایت شرط بندی سایت شرط بندی معتبر فوتبال

بازگشت به وبلاگ

18 دسامبر 2020 17:02

حداقل یک سال دیوانه وار بوده است. ما در اینجا در Feeder فراز و نشیب های زیادی را تجربه کرده ایم. یک آمار همه گیر جهانی. فیدر 10 ساله شد. با بازگشت به 12 ماه گذشته ، ما به چیزهایی که توانسته ایم انجام دهیم افتخار می کنیم. برای جمع بندی فیدر در سال 2020 ، در اینجا چند مورد مهم رخ داده است:

فیدها را بکشید و رها کنید

یکی از اولین به روزرسانی هایی که امسال حذف کردیم ، این بود کشیدن و رها کردن برای فیدها و پوشه ها. این فقط یکی از موارد آزار دهنده ای بود که ما باید قرن ها قبل رفع می کردیم. خوشحالیم که بالاخره این کار را کردیم!

فیدر موجود برای Microsoft Edge

اعلامیه گسترده ای بود فیدر مایکروسافت اج. این خبر خوشحال کننده ای برای همه کاربران ویندوز بود و بازخوردی که پس از آن دریافت کردیم شگفت آور بود.

مضامین جدید

ما دو موضوع جدید برای داشبورد شما منتشر کردیم: ماسه و خاکستری.

داشبورد عمومی

ویژگی ای که ما بسیار به آن افتخار می کنیم ویژگی آن است داشبورد عمومی. با یک حساب کاربری Feeder و قدرت داشبورد عمومی ، می توانید داشبورد خود را ایجاد کنید تا در سازمان خود به اشتراک بگذارید.

برای به نمایش گذاشتن این ما رایگان ایجاد کردیم داشبورد کرونا برای هر کسی که می خواهد در مورد ویروس کرونا به روز باشد و از آن مطلع شود. ما همچنین منتشر شد داشبورد انتخابات ایالات متحده برای کمک به گسترش یک دید متعادل از تمام اخبار در جریان است.

با فیدر کار پیدا کنید

با در نظر گرفتن همه گیری ، ما می خواستیم الهام بخشیدن به مردم برای کار در خانه و برای یافتن کارهای از راه دور از فیدر استفاده کنید. ما ایجاد کردیم راهنمای ساده برای کارگران از راه دور و فریلنسرها در پایگاه دانش فیدر ما. این برای ما هر بار که به ما اطلاع می دهید که با Feeder کار کرده اید بسیار مهم است.

افزایش رسانه های اجتماعی

امسال یک مدیر رسانه اجتماعی استخدام کردیم. ما بیش از هر زمان دیگری به به روزرسانی ، ارسال و فعالیت در کانال های رسانه های اجتماعی خود پرداختیم. ما مقوله های مختلفی مانند موارد برجسته فیدر، داستان های کاربر و به روزرسانی فیدر.

هدف ما ایجاد پایگاه پیروان خود و شروع به تعامل با شما بیشتر است. پاسخ بسیار خوبی بوده است! ما از هر دنبال کننده جدید بسیار سپاسگزاریم. وضعیت بررسی RSS یک نمونه عالی از چگونگی کمک شما به جامعه در کل است. ما همچنین از تعداد زیادی از قهرمانانی که در مسابقات ما شرکت کردند خوشحال شدیم اخبار جعلی را از بین ببرید.

قطعاً ما این موضوع را ادامه خواهیم داد و حتی سال آینده اتفاقات جالب تری را رقم خواهیم زد. مراقب ما باشید اینستاگرام، توییتر، فیس بوک و لینک شده.

به توییتر ارسال کنید و فیدهای توییتر را دنبال کنید

ادغام توییتر در فیدر درخواست بسیار مهمی از طرف کاربران ما بوده است. ما بسیار خوشحالیم که توییتر به ما اجازه داده است این درخواست را به واقعیت تبدیل کنیم. نه تنها می توانید فیدهای توییتر که در داشبورد خود دنبال می کنید، اما شما همچنین می توانید خودتان به توییتر ارسال کنید مستقیماً از حساب Feeder خود استفاده کنید.

به روزرسانی دفتر

ما به دلایل واضح امسال خیلی از خانه کار کرده ایم. اما هنگامی که هنوز کار در دفتر کار کاملاً ایمن بود ، ما به Feeder HQ پاسخ دادیم قبل کوچک با تهیه برخی از گیاهان داخلی و داخلی. یک محیط کار الهام بخش بسیار مهم است!

خبرنامه ها

به عنوان بخشی از ما جشن های سال دهم ما کاربران خود را با به روزرسانی های بسیار جالب تر شگفت زده کردیم. ما ویژگی خبرنامه به شما امکان می دهد انواع خبرنامه های دریافت شده در صندوق ورودی ایمیل خود را به حساب Feeder خود هدایت کنید. یک روش بسیار خوب برای منظم نگه داشتن و بدون درهم و برهم بودن صندوق ورودی خود.

فروشگاه فیدر

سورپرایز 10 سالگی دیگر ، انتشار ما بود فروشگاه فیدر در Teespring. در حال حاضر ما 2 طرح مختلف تی شرت برای فروش داریم اما مشتاق هستیم که سال آینده محصولات جالب تری بسازیم (از این طریق هیچ درآمدی کسب نمی کنیم ، این فقط برای سرگرمی است) بنابراین با ما همراه باشید!

برنامه های جدید در راه است

سرانجام ، ما بزرگترین پروژه خود را در سال 2020 به عهده گرفتیم: برنامه های جدید برای iOS و Android. ما از اینکه به شما بگوییم واقعاً به خط پایان نزدیک هستیم و آن را در ابتدای سال 2021 آزاد خواهیم کرد بسیار هیجان زده هستیم. ما می خواهیم از همه کسانی که با آزمایش نسخه بتا برای برنامه iOS به ما کمک کرده اند ، تشکر کنیم. ما به زودی نسخه بتای اندروید را ارسال خواهیم کرد ، بنابراین آزمایشگران بیشتری لازم است! ثبت نام کنید تا در اینجا بتا تستر شوید.

سال نو مبارک!

آخرین و نه مهمترین ، ما می خواهیم این پست و کل سال را با تشکر از همه شما جمع بندی کنیم. از شما برای استفاده از فیدر ، پیگیری ما در شبکه های اجتماعی و انگیزه ما برای ادامه کار بر روی این محصول برای هر سال بهتر بودن ، متشکریم. ما برای همه شما یک تعطیلات آرام و سال نو آرزو داریم.

وارد روحیه تعطیلات شوید

سایت شرط بندی سایت پیشبینی سایت شرط بندی معتبر

شرط بندی فوتبال : 3 روش AI اکنون می تواند تجارت شما را متحول کند


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

اکثر شرکت ها در مراحل اولیه تعیین بهترین روش برای استفاده از هوش مصنوعی برای آنها هستند.

31 دسامبر 2020

3 دقیقه خواندن

نظرات بیان شده توسط کارآفرین همکاران خودشان هستند.


وعده آینده اتومبیل های خودران و داروی دقیق را برای لحظه ای کنار بگذاریم ، بیایید بررسی کنیم که چگونه هوش مصنوعی می تواند از تعداد قابل توجهی پشتیبانی کند نیاز دارد.

این پیاده سازی ها در مقیاس کوچکتر قطعاً همان چیزی نیستند که شما آن را پرزرق و برق می نامید ، اما این قدرت را دارند که از راه های معنی دار بر روی خط اصلی شما تأثیر بگذارند. از همه بهتر ، هر یک از ایده های ارائه شده در اینجا بر اساس موجود است فن آوری که می تواند در یک بازه زمانی معقول و با هزینه مناسب اجرا شود.

مربوط: 3 راهی که مشاغل کوچک می توانند به سرعت AI را بدون داده های بزرگ یا برنامه نویسان در آغوش بگیرند

1. اتوماسیون فرایندهای تجاری

تقریباً در هر زمینه شغلی ، مقدار زیادی از وقت کارمندان به اجرای وظایف تکراری و تکراری اختصاص یافته است. وظایفی مانند ورود و انتقال داده برای راه اندازی مشاغل ضروری است ، اما همچنین زمان بر بوده و منابع زیادی را از بین می برد.

اینجاست که (ՀՀԿ) وارد می شود. ՀՀԿ نوعی فناوری اتوماسیون فرآیند تجارت است که در آن نرم افزار (“ربات” در اتوماسیون فرآیند رباتیک) برای انجام کارهای مبتنی بر منطق مستقر می شود. اگر قانونی برای چگونگی انجام یک کار وجود داشته باشد ، به احتمال زیاد می تواند با جمهوری اسلامی به نتیجه برسد. اداره پشت دفتر ، و حتی منابع انسانی همگی مناطقی هستند که جمهوری اسلامی می تواند به کاهش بار وظایف یکنواخت کارمندان کمک کند.

ՀՀԿ می تواند در کل سازمان مستقر شود ، و کارآیی بیشتری را تقریباً برای هر بخش ایجاد می کند. از همه بهتر ، اجرای آن آسان و ارزان است و برای راه اندازی آن نیازی به فرآیند پردازنده سنگین نیست.

2. استخراج بینش عملی

یکی از امیدوار کننده ترین پیاده سازی هوش مصنوعی برای مارک ها و بازاریاب ها توانایی استخراج داده ها برای بینش عملی است. ما در جهانی زندگی می کنیم که پر از داده های موجود در مورد مصرف کنندگان و رفتارهای آنها است. مقدار زیاد داده ها مشکل خاص خود را نشان می دهد – چگونه می توان همه چیز را درک کرد.

در اینجا دوباره ، هوش مصنوعی کاملاً در موقعیت ارائه یک راه حل قرار دارد. الگوریتم ها در تشخیص الگوهای موجود در انبوه داده ها سریعتر و به مراتب بهتر از انسان هستند. به جای اتلاف وقت کارمند با ارزش ، الک کردن داده ها به امید یافتن سوزن ضرب المثل در انبار کاه ، برنامه ها می توانند بسیاری از اقدامات اساسی را برای استخراج معنی دارترین بینش انجام دهند.

الگوریتم های یادگیری ماشینی همچنین می توانند داده های گذشته را برای پیش بینی نتایج و رفتارهای آینده تجزیه و تحلیل کنند ، که این فرم AI را برای بازاریابان ضروری می کند. “یادگیری” در یادگیری ماشین به این معنی است که الگوریتم ها با گذشت زمان هوشمندتر می شوند. هرچه بیشتر آموزش ببینند دقیق تر می شوند.

مربوط: 3 مورد از بهترین موارد استفاده برای هوش مصنوعی در نرمال جدید ما

3. تعامل با مشتریان و کارمندان

جذب مشتری و کارمند داخلی روش دیگری است که مشاغل می توانند هوش مصنوعی را در آینده نزدیک به کار گیرند.

فن آوری های تعامل شناختی مانند چت بات ها ، موتورهای توصیه و عوامل هوشمند می توانند به جبران خلا خدمات مشتری کمک کنند. این فناوری ها با مدیریت طیف وسیعی از درخواست ها و مشکلات سطح پایین مشتری ، کارمندان خدمات مشتری را کاهش می دهد و وقت آنها را برای انجام کارهای پیچیده تر آزاد می کند.

ایجاد تجارب شخصی و شخصی بیشتر برای کاربران یک هدف اصلی برای بازاریابان است. موتورهای پیشنهادی با استفاده از یادگیری ماشین و به گسترش فرصتها برای ابتکارات شخصی سازی که محرک مشارکت مصرف کننده هستند کمک می کند .

در حال حاضر باید مشخص شود که برای بهره مندی از آن نیازی به تعمیر اساسی از بالا به پایین نیست . با شروع اتوماسیون فرآیند کسب و کار ، استخراج داده ها برای تولید بینش و پیش بینی های غنی ، و تمرکز بر روی تعامل شناختی ، مارک ها می توانند بلافاصله پیشرفت های معنادار سازمانی را با هوش مصنوعی آغاز کنند.

بارگذاری…


سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر

شرط بندی فوتبال : 10،800 سال پیش ، انسانهای اولیه جزایر جنگلی را در چمنزارهای آمازونیا کاشتند


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

این مقاله در کشف کنید مسئله علمی سالانه “جزایر جنگلی در میان دریای چمنزار”. با تبدیل شدن به یک روزنامه نگاری علمی ما را پشتیبانی کنید مشترک.


هر بهار ، باران ها و ذوب برف ها علفزارهای وسیعی را که بین کوه های آند و جنگل های آمازون در شمال بولیوی امتداد دارند ، باتلاق می کنند. اما هزاران تپه پوشیده از درخت ، محکم ایستاده اند و چند فوت بالاتر از علف های سیل زده قرار دارند.

امبرتو لمباردو از دانشگاه برن ، سوئیس می گوید: “آنها مانند جزایری در دریای ساوانا هستند.” در سال 2006 ، لومباردو برای اولین بار پا به یک جزیره جنگلی در این منطقه Llanos de Moxos گذاشت ، و درمورد چگونگی شکل گیری طبیعی چنین ویژگی هایی متحیر است. وی به یاد می آورد: “من به عنوان یک جغرافی دان ، هیچ توضیحی برای آنها نداشتم.”

یک نظریه حاکی از آن بود که طی چند قرن گذشته ، دامداران جنگل های انبوه را برای ایجاد مراتع تراشیده اند ، اما نخلستان های پراکنده ای با هر درخت حدود 300 درخت را ترک کرده اند. اما این توضیح نمی دهد که چرا درختان در زمین های بالاتر رشد می کنند.

معلوم می شود جزایر جنگلی توسط مردم ساخته شده اند و بسیار قدیمی تر از آن هستند که حدس می زنند. لومباردو و همکارانش تاریخچه منتشر شده در ماه مه در نیچر را تجزیه و تحلیل کردند: تقریباً 10،800 سال پیش ، انسانها محصولات کشاورزی را در Llanos de Moxos کشت می کردند – که این باعث می شود که آنها قدیمی تر از گیاهان اهلی شناخته شده باشند که در خاور میانه حدود 12000 سال پیش کشت شده . این امر آمازونیا را به عنوان یکی از اولین مکانهای روی زمین تأیید می کند که در آن مردم گونه های وحشی را اهلی می کنند.

باغ های آنها کمپوست حاصلخیزی را انباشته کرده اند ، که به درختان اجازه می دهد از بالای سیلاب فصلی ریشه بزنند. به جای خراب کردن محیط زیست ، جزایر مصنوعی جنگل تنوع زیستی را افزایش داده و زیستگاه گونه های نادر را تا به امروز فراهم کرده اند. خوزه ام. کاپریلس ، یکی از نویسندگان و باستان شناسان تحقیق در ایالت پن ، می گوید: “لومباردو” یک قهرمان واقعی در این تحقیقات است.

در سال 2012 ، او و لومباردو حفاری هایی را آغاز کردند ، که تأیید کرد سه تپه توسط افراد باستان ساخته شده است ، بر اساس خاک رس سوخته ، ضایعات مواد غذایی و دفن انسان در این سایت ها. برای مطالعه جدید ، لومباردو از Google Earth برای ترسیم 6،643 جزیره جنگلی در منطقه ای به اندازه ایلینوی استفاده کرد. او می گوید: “این کار مانند فعالیت ذن بود که فقط مشغول گشت و گذار و کلیک بر روی همه این نقاط بود.”

محققان برخی را کاوش کردند و بقایای باستان شناسی مشابه مکان های کاملاً کاوش شده را در 64 مورد از 82 تپه آزمایش شده بین 2300 تا 10،850 سال کشف کردند. از این نسبت ، آنها تخمین زدند که انسان حداقل 4،700 را از 6،643 جزیره جنگلی قابل مشاهده در Google Earth برپا داشته است.

در کاوشگرها ، تیم همچنین بقایای گیاهان میکروسکوپی از قدیمی ترین کدوی شناخته شده در آمازونیا و قدیمی ترین محصولات شناخته شده گیاه کاساوا غده ای (همچنین به عنوان مانیوک یا یوکا) در جهان و همچنین تقریبا 7000 ساله را شناسایی کرد. ذرت – گیاهی که حدود 2000 سال قبل در مکزیک اهلی شد. به نظر می رسد مردم بذرهای خود را از یک جامعه به جامعه دیگر منتقل می کردند و بیش از 2000 مایل از آمریکای جنوبی به آمریکای جنوبی داشتند.

داده های جدید همچنین حاکی از وجود فاصله 8000 ساله بین شروع کشت در مقیاس باغ و کشاورزی تمام عیار با کانال ، مزارع و وابستگی به گونه های اهلی است. در سایر نقاط جهان ، این تغییر تقریباً طی 1000 سال اتفاق افتاده است. بعدی در دستور کار تحقیقاتی لومباردو: درک اینکه چرا در آمازونیا خیلی طولانی شد.


سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر

شرط بندی فوتبال : افکار نوشتن یک اسکریپت Google App


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

اخیراً یکی از دوستانم یک برنامه ساده را درخواست کرده است که می تواند داده های گرفته شده از چند سرویس آنلاین را با هم مرتبط کند. من تصمیم گرفتم که بهترین راه برای این کار استفاده از صفحه گسترده گوگل به عنوان میزبان ، قرار دادن کد در قسمت اسکریپت صفحه گسترده باشد. من در Google App Script تخصصی ندارم ، اما این تمرین منجر به چند مشاهده شد ، که احساس می کنم مجبورم آنها را به اشتراک بگذارم.

Google Sheets یک بستر عالی برای افراد غیر برنامه نویس است

اگر من این اسکریپت را برای اهداف خودم می نوشتم ، هرگز استفاده از Google Sheets را در نظر نمی گرفتم. من فقط آن را به عنوان یک اسکریپت خط فرمان می نویسم. اما هر زمان که شما برنامه ای را می نویسید ، باید در مورد نحوه استقرار آن فکر کنید. در این مورد دوست من ، اگرچه کاملاً با مهارت شنیداری و بصری آشنا است ، برنامه نویسی نیست که هر روز از خط فرمان استفاده کند. همچنین وی از ویندوز استفاده می کند ، محیطی که من دیگر با آن آشنا نیستم. (به من گفته اند که خط فرمان آن بهتر شده است ، اما نوار آنقدر کم بود که بتواند کرم ها از آن جا پرش کنند.) با این حال ، او مانند بسیاری از کاربران کامپیوتر همیشه از Google Sheets استفاده می کند.

صفحات گسترده توجه بسیاری از ما برنامه نویسان حرفه ای را به خود جلب می کنند ، که اغلب مشاهده می کنند بسیاری از مشاغل به چند صفحه گسترده اکسل متکی هستند. وقتی این را می گوییم ، چشم هایمان را می چرخانیم ، چنین صفحات گسترده ای اغلب دارای کد پیچیده ، مدولار کم ، بدون آزمایش ، بدون کنترل نسخه هستند و بدون هیچ گونه مدیریتی روی کامپیوترهای کاربران می نشینند. صفحات گسترده معمولاً مجبور به انجام وظایفی می شوند که مرتب نشده اند و معمولاً مانند پایگاه داده های هم ردیف ، جدول هایی که روابط آنها شبکه ای از VLOOKUP های درهم است ، عمل می کنند.

اما این صفحات گسترده به دلایلی بسیار مورد استفاده قرار می گیرند. استعاره جدولی یک روش ساده و در عین حال موثر برای مدیریت داده های ساخت یافته است. با استفاده از
برنامه نویسی مصور، کاربران می توانند نتایج را بلافاصله هنگام کار در فرمول های خود مشاهده کنند. Google Sheets اشتراک گذاری صفحات گسترده با سایر افراد را آسان می کند و داشتن مکان مشترک برای ذخیره داده های مشترک را برای چندین نفر آسان می کند. من بعنوان شخصی که به طور ذاتی موانع مبتنی بر مهارت را دوست ندارد ، من اغلب ناامید شده ام که توسعه دهندگان نرم افزار بیشتر درگیر کاری نیستند که سایر متخصصان با صفحه گسترده خود انجام می دهند.

مانند بسیاری از موارد دیگر ، صفحه گسترده محیط طبیعی را برای دوستم برای انجام این کار ایجاد می کند. برگه های Google به من اجازه می دهد منوی جدیدی ایجاد کنم و اسکریپت ها را به راحتی به موارد منو متصل کنم ، بنابراین او می تواند اسکریپت های من را به راحتی اجرا کند ، داده های تولید شده توسط اسکریپت ها را ببیند و داده های اضافی را مستقیماً به یک صفحه اضافه کند. ما به راحتی می توانیم یک صفحه را به اشتراک بگذاریم بنابراین در صورت بروز مشکل می توانم اسکریپت ها را به روز کنم یا به داده ها نگاه کنم. او لازم نیست هیچ نرم افزاری را روی دستگاه خود نصب کند یا آن را به روز نگه دارد.

اگر من توسط یک اتوبوس مورد سو استفاده قرار بگیرم ، او به راحتی می تواند برگه را با شخص دیگری به اشتراک بگذارد ، که می تواند ورق را به راحتی ویرایش و اجرا کند. از آنجا که کد جاوا اسکریپت است ، برای کار برنامه نویسان زبان کاملاً شناخته شده ای است.

سخت ترین قسمت احراز هویت است

“منطق تجارت” در متن ها بسیار آسان بود. لیست اعضای موجود در کانال Slack خود را با اعضای ثبت شده در Patreon یا در لیست جداگانه خود مقایسه کنید. سپس از این مقایسه برای تولید لیست افرادی برای افزودن یا حذف از Slack استفاده کنید. تمام آنچه که لازم بود این بود که ایمیل ها را از لیست ها بیرون بکشید و چند عمل تفاوت را انجام دهید.

بخش اصلی دریافت لیست ها بود ، نه به معنای واکشی آنها از REST URL (که باز هم آسان است) ، بلکه برای جلب رضایت خدماتی است که اسکریپت برای دریافت این داده ها مجاز است. هر دو سرویس از OAuth برای مرتب سازی احراز هویت استفاده می کنند ، اما این استاندارد حتی با کتابخانه ای که اسکریپت های Google App ارائه می دهد هیچ نشانه ای از تمیز کردن و پخش آن نیست.

در پایان من به احراز هویت نیمه اجتناب و کاملاً اجتناب کردم. Slack مکانیسم خوبی دارد که با استفاده از آن می توانید برنامه ای برای دسترسی به داده های Slack ایجاد کنید ، مجوزهای لازم را به آن بدهید و یک رمز دسترسی ساده در وب سایت خود به شما می دهد. برای این نرم افزار فقط می توانم آن رمز دسترسی را در اسکریپت قرار دهم. معمولاً این یک عمل امنیتی ضعیف است ، اما در این حالت اسکریپت همان صفحه داده ای است که بارگیری می کند (و این داده ها به شدت حساس نیستند). بیشترین پیچیدگی را که OAuth ارائه داد ، قدم برد.

داده های Patreon هم برای احراز هویت و هم حساس تر از اطلاعات ناخوشایندتر بودند. بنابراین در اینجا من یک احراز هویت را انجام دادم. وب وب Patreon به کاربر اجازه می دهد تا داده ها را در یک فایل CSV بارگیری کند. بنابراین من از دوستم می خواهم این کار را انجام دهد و داده ها را به صفحه گسترده وارد کند.

در اینجا یک فرصت واقعی برای Google وجود دارد تا کل جریان احراز هویت را ساده کند. من باید بتوانم فقط یک روش واکشی را در یک سرویس از راه دور فراخوانی کنم ، و زیرساخت ها جریان احراز هویت را مرتب کنند بدون اینکه خودم بخواهم آنها را بررسی و برنامه ریزی کنم.

مستندات Google غیر صفر است

این در مورد بهترین چیزی است که می توانم در مورد آن بگویم. لیستی از تمام کلاسها و روشهای آنها وجود دارد. با خواندن از طریق آنها معمولاً می توانم چیزی را کشف کنم. اما چیز دیگری غیر از این نیست ، و حتی یک کار ساده مانند این من را به مکان های ناخوشایندتری نسبت به آنچه می خواهم هدایت کرد.

سازماندهی صفحه گسترده

من با صفحات گسترده برنامه ریزی نمی کنم (من داده های کلی و رسم نمودار را در R انجام می دهم) بنابراین من آنقدر تجربه ندارم که بتوانم نظرات قاطعی در مورد شکل صفحه گسترده با ساختار خوب داشته باشم. ممکن است جایی در مورد چگونگی طراحی گسترده صفحه گسترده شما توصیه شده باشد ، اما من نتوانستم آن را پیدا کنم (اگر کسی مقاله خوبی می داند ، به من اطلاع دهید).

با توجه به این کمبود ، من با غریزه همیشگی ام رفتم. اولین غریزه این است که داده ها را با حداقل دستکاری در فروشگاه محلی بارگیری کنید. بنابراین اسکریپت من برای بارگیری داده ها از slack کاری بیش از انتخاب زمینه های مورد نظر من و ریختن آنها در یک صفحه صفحه گسترده نبود. به همین ترتیب صفحه من از داده های Patreon یک بارگذاری ساده از پرونده CSV را از Patreon فرض می کند. هر دو این صفحات برای پاک کردن و جایگزینی کل صفحه هنگام تازه سازی ساخته شده اند. صفحه سوم فقط شامل لیستی از موارد استثنائی است که توسط دست نگهداری می شود. هر سه این صفحات ، داده های خالص داده ها ، یک جدول واحد ، عناوین در ردیف 1 ، بدون فرمول هستند. اسکریپت مقایسه از این سه صفحه داده خوانده می شود ، منطق کاربرد (ساده) را انجام می دهد و دو لیست را به یک صفحه خروجی جداگانه منتقل می کند.

این بسیار است که من می خواهم از پرونده های متنی جداگانه در یک برنامه خط فرمان استفاده کنم. به کاربر امکان می دهد داده های بارگیری نشده را مشاهده کند. من می توانم منطق برنامه را بدون بارگیری هر بار اجرا (و آزمایش) کنم. من می توانم یک برگه با داده های آزمون تنظیم کنم. یک جریان واضح و یک طرفه داده بین ورق ها و کد وجود دارد.

از appendRow برای افزودن ردیف ها استفاده نکنید

اولین باری که کد را برای بارگیری از slack اجرا کردم دلگیر کننده بود ، زیرا به طرز وحشتناکی اجرا می شد. ممکن است فقط هزار ردیف وجود داشته باشد ، اما با سرعت تقریباً یک ثانیه به صفحه گسترده اضافه شدند. ما می توانستیم تحمل کنیم اما خیلی خوب نبود. من اطمینان داشتم که باید راهی سریعتر برای این کار وجود داشته باشد.

با شکار در اطراف API ، دیدم که بسیاری از عملیات صفحه گسترده به تعیین دامنه در صفحه گسترده بستگی دارد. من با استفاده از یک ردیف جدید اضافه می کردم
Sheet.appendRow، اما اگر محدوده ای را تعریف کنم (که می تواند کل صفحه باشد) ، می توانم استفاده کنم Range.setValues بجای. هنگامی که من این کار را کردم ، اضافه کردن ردیف ها به طور فوری انجام شد. من هیچ نکته ای در اسناد یا جای دیگری در وب برای آزمایش این مورد پیدا نکردم ، این مهم از آنجاست که کمبود این نوع اسناد مانع استفاده گسترده مردم از این سیستم عامل است.

به جستجوی API اجازه دهید چندین مقدار را جستجو کند

همانطور که در بالا ذکر کردم ، به دلیل مشکلات موجود در احراز هویت ، در نهایت از رابط REST برای داده های Patreon استفاده نکردم. اما دلیل دیگری برای حمایت از بارگیری CSV وجود داشت. Patreon API منبعی را شامل می شد که به من می گوید همه افرادی که طرفدار یک کمپین هستند ، برای این افراد شناسه Patreon و نام آنها را به من می دهد. اما برای بررسی صحیح لیست slack ، به ایمیل آنها نیز احتیاج داشتم. که من می توانم با گرفتن یک منبع نمایه شده توسط شناسه ، به دنبال آن باشم. با این حال لازم است که این کار را برای چند صد نفر انجام دهم ، و برای هر یک از آنها یک GET جداگانه لازم دارم.

پیام به طراحان API این است. اگر توانایی جستجوی اطلاعات مربوط به یک منبع توسط شناسه را فراهم کرده اید ، از توانایی تهیه داده برای چندین شناسه به طور هم زمان پشتیبانی کنید.

من دوست دارم منطق برنامه را از صفحه گسترده IO جدا کنم

روش دستیابی به داده ها از صفحه گسترده استفاده از ستون و سطرهای مرسوم صفحه گسترده است (به عنوان مثال سلول “B22” یا دامنه “A2: E412”). این برای بسیاری از وظایف اسکریپت نویسی منطقی است ، زیرا برنامه نویسان در مورد دستکاری سلولهای صفحه گسترده به این مسئله فکر می کنند.

من تمایل دارم که چیزها را متفاوت ببینم ، داده هایم را به صورت ساختارهای اصلی داده های جاوا اسکریپت ترجیح می دهم ، به ویژه اینکه می توانم از JavaScript استفاده کنم خط لوله جمع آوری
اپراتورهای موجود در آنها

با توجه به این ، این عملکرد مفیدی بود که من برای استخراج داده ها از یک صفحه و برگرداندن آنها به صورت آرایه ای از اشیا جاوا اسکریپت نوشتم.

extractData(sheetName, firstCol, lastCol, mapper) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName)
  const numRows = sheet.getLastRow()
  const range = `${firstCol}1:${lastCol}${numRows}`
  return sheet.getRange(range).getValues().map(mapper)
}

سپس می توانم از آن با کدی مانند این استفاده کنم:

const mapper = row => ({email: row[3], name: row[0], slackId: row[1]})
slackData = this.extractData("raw-slack-download", "A", "D", mapper)

هنگامی که آن را وارد آرایه کردم ، فهمیدم که نتایج آسان است ، اگرچه مجبور شدم یک مطلب ساده بنویسم Array.difference عملکردی که من به آن دسترسی نداشتم لوداش.

محیط توسعه قابل درک است

برای نوشتن جاوا اسکریپت ، من فقط یک مورد منو را در صفحه گسترده انتخاب می کنم و در یک ویرایشگر متن خام تایپ می کنم. این خانه راحت نیست که من به آن عادت کرده ام ، اما برای یک شب اقامت خوب است.

اگر کار پیچیده تری انجام می دادم ، در مورد ایجاد یک محیط بهتر تحقیق می کردم. یک احتمال این است که ببینم آیا می توانم اسکریپت را با استفاده از حالت عالی Tramp Emacs ویرایش کنم (که اجازه می دهد فایل های از راه دور را ویرایش کنید ، مثل اینکه آنها محلی هستند.) هنوز هم یک راه بهتر برای همگام سازی فایل های محلی با google drive ، به من اجازه می دهد تا آنها را حفظ کنم کد منبع در repo git. اما برای یک کار ساده مانند این ، حدود 150 خط کد ، ارزش بررسی این مسئله را نداشت که آیا این امکان وجود دارد.

خلاصه

میزبانی یک برنامه ساده در صفحه گسترده Google یک سیستم عامل جذاب برای طیف وسیعی از کارهای ساده است. این به کاربران امکان می دهد بدون نیاز به نصب چیزی روی دستگاه خود ، کد را اجرا کنند ، داده ها را در یک محیط آشنا وارد کنند و از اشتراک آسان با همکاران پشتیبانی کنند. این یک پلتفرم نیست که من درباره آن بحث های زیادی می شنوم ، اما باید یکی از آنها را بخاطر بسپارم. به طور خاص ، برای هر کاری که یک اسکریپت پوسته ساده باشد ، اما کاربران شما با پنجره های کنسول و فایل های متنی راحت نیستند.



سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر

شرط بندی فوتبال : بازار VCSEL با رشد 18.3٪ CAGR از 1 میلیارد دلار در سال 2020 به 2.7 میلیارد دلار در سال 2025 رشد خواهد کرد


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

9 اکتبر 2020

بازار لیزر ساطع کننده سطح عمودی (VCSEL) با نرخ رشد سالانه مرکب (CAGR) 18.3٪ از بیش از 1 میلیارد دلار در سال 2020 به 2.7 میلیارد دلار در 2025 افزایش خواهد یافت ، گزارش “VCSELs – روندهای بازار و فناوری 2020” از یول دپوپمنت

به طور خاص ، برنامه های مخابراتی و زیرساختی (عمدتا datacom) انتظار می رود در سال 2020 277 میلیون دلار درآمد کسب کنند و در CAGR 13.2 درصد باید در سال 2025 به 516 میلیون دلار برسند. “سایر برنامه ها هنوز قابل توجه نیستند اما می توانند در میان مدت و بلند مدت ظاهر شوند ، مانند برنامه های کاربردی خودرو مانند LiDAR [light detection & ranging] یا سیستم های نظارت بر راننده ، “Pierrick Boulay ، Solid State Lighting and Lighting Systems ، در بخش Photonics ، Sensing & Display Yole.

بررسی اجمالی بازار

یول می گوید تا سال 2017 بازار VCSEL توسط برنامه های datacom هدایت می شد. از آن زمان به بعد از انتخاب فنی استراتژیک اپل و پیاده سازی ماژول Face ID در آیفون های خود ، داده های اطلاعاتی گام به گام به عنوان محرک بازار با سنجش 3D جایگزین می شوند (به 75٪ از درآمد VCSEL در سال 2020 افزایش می یابد).

سیلوین هالرو مدیر پروژه در گزارش “ماژول Apple iPad Pro LiDAR” از شرکت Yole شرکت System Plus Consulting می گوید: “LiDAR از VCSEL استفاده می کند که از Lumentum می آید.” وی می افزاید: “بنابراین ، Lumentum با اپل همکاری نزدیک دارد و تنها با تلفن های هوشمند اپل بیش از 100 میلیون دلار درآمد کسب کرده است.” لیزر در LiDAR خود به گونه ای طراحی شده است که چندین الکترود را به طور جداگانه به آرایه انتشار دهنده متصل می کند. برای افزایش آزمایش پروب ویفر از طراحی جدید با تماس با مسا استفاده شده است. ”

پس از عرضه آیفون X ، چندین سازنده تصمیم گرفته اند که همین مسیر را طی کرده و ماژول های سنجش سه بعدی را در قسمت جلوی گوشی های هوشمند خود برای تشخیص چهره پیاده سازی کنند. متعاقبا انتظار می رفت که سایر سازندگان گوشی های هوشمند چینی نیز چنین ماژول هایی را در قسمت جلویی خود پیاده سازی کنند. سال بعد این مورد وجود داشت ، اما روند به سرعت کاهش یافت.

بولای خاطرنشان می کند: “ماژول های سنجش سه بعدی ، عمدتا برای کاربردهای عکاسی ، از قسمت جلو به سمت جهان منتقل می شوند.” وی می افزاید: “این را می توان با عوامل مختلفی توضیح داد ، از جمله هزینه ماژول های سنجش سه بعدی ، دارایی فکری اطراف راه حل های نوری ساختاری و رقابت با راه حل های اثر انگشت زیر نمایشگر که برای تلفن های هوشمند با قیمت متوسط ​​بیشتر قابل دسترسی است.”

این انتقال از سمت جلو به سمت جهان روبرو قطعاً پیامد مهمی برای بازار VCSEL به همراه دارد. انتظار می رفت که ماژول های سه بعدی جلو از راه حل های ساختاریافته با دو VCSEL استفاده کنند. در مقابل ، ماژول های سه بعدی جهان رو به راه حل های زمان پرواز (ToF) فقط با یک VCSEL استفاده می کنند. در این زمینه پویا ، انتظار می رود برنامه های کاربردی موبایل و مصرف کننده در سال 2020 0.8 میلیارد دلار درآمد کسب کنند و سپس با CAGR 20.1٪ تا 2.1 میلیارد دلار در 2025 رشد کنند.

از زمان پذیرش راه حل های VCSEL برای ماژول های سنجش سه بعدی در تلفن های هوشمند ، اپل اکثر VCSEL های تولید شده توسط Lumentum را مصرف می کند. در سال 2017 ، 41 میلیون واحد در گوشی های آیفون اجرا شد و در سال 2020 بیش از 325 میلیون دستگاه VCSEL انتظار می رود در گوشی های آیفون استفاده شود. بولای خاطرنشان می کند: “این عدد نشان دهنده بیش از دو سوم کل VCSEL مصرفی برای سنجش سه بعدی موبایل است.” “Lumentum ، به عنوان اصلی ترین تامین کننده VCSEL های اپل ، با داشتن 68٪ بازار در سال 2020 ، به طور واضح بازار موبایل و مصرف کننده را رهبری می کند.” پشت Lumentum ، ams و Trumpf به ترتیب 15 و 7 درصد بازار دارند.

سهم بازار

زنجیره تأمین نیز به شدت تحت تأثیر تصمیمات سیاسی و جنگ تجاری بین ایالات متحده آمریکا و چین قرار گرفته است. در ماه مه 2019 ، ایالات متحده صادرات خود را به Huawei Technologies چین ممنوع کرد. Lumentum عرضه Huawei را متوقف كرد ، كه بايد ارائه دهنده جديدي از VCSEL ها را پيدا كند. این ممنوعیت به زنجیره تأمین هواوی آسیب جدی وارد کرد. بنابراین هواوی با ایجاد تأمین کننده چینی Vertilite چاره ای جز ساختن زنجیره تامین خود نداشت. انتظار می رود سایر تأمین کنندگان VCSEL چینی ظهور کنند زیرا سایر سازندگان گوشی های هوشمند مانند Oppo ، Xiaomi و Vivo می توانند این روند را دنبال کنند و یک اکوسیستم محلی را برای ایمن سازی زنجیره تامین خود توسعه دهند.

موارد مرتبط را مشاهده کنید:

بازار تصویربرداری و سنجش سه بعدی با 20٪ CAGR به 15 میلیارد دلار در سال 2025 رشد می کند

برچسب ها: VCSEL ها

بازدید: www.i-micronews.com/products/vcsels-market-and-techology-rends-2020


سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر

شرط بندی فوتبال : Don’t Compare Averages


سایت شرط بندی فوتبال
بهترین سایت شرط بندی
سایت شرط بندی معتبر فوتبال

Imagine you’re an executive, and you’re asked to
decide which of your sales leaders to give a big award/promotion/bonus to.
Your company is a tooth-and-claw capitalist company that only considers
revenue to be important, so the key element in your decision is who has got
the most revenue growth this year. (Given it’s 2020, maybe we sell
masks.)

Here’s the all-important numbers.

nameaverage revenue increase (%)
alice5
bob7.9
clara5

And a colorful graph

Based on this, the decision looks easy. Bob, at just under 8%, has a
notably better revenue increase than his rivals who languish at 5%.

But lets dig deeper, and look at the individual accounts for each of our
salespeeps.

nameaccount revenue increases (%)
alice-121-3-1101381110
bob-0.5-2.5-6-1.5-2-1.8-2.380
clara374.55.54.855.2465

This account-level data tells a different story. Bob’s high performance
is due to one account yielding a huge 80% revenue increase. All his other
accounts shrank. With Bob’s performance based on just one account,
is he really the best salespeep for the bonus?

Bob’s tale is a classic example of one the biggest problems with
comparing any group of data points by looking at the average. The usual
average, technically the mean, is very prone to one outlier swinging the
whole value. Remember the average net worth of a hundred homeless people is
$1B once Bill Gates enters the room.

The detailed account data reveals another difference. Although Alice and
Clara both have the same average, their account data tells two very
different stories. Alice is either very successful (~10%) or mediocre (~2%), while Clara
is consistently mildly successful (~5%). Just looking at the average hides this
important difference.

By this point, anyone who’s studied statistics or data visualization is
rolling their eyes at me being Captain Obvious. But this knowledge isn’t
getting transmitted to folks in the corporate world. I see bar charts
comparing averages all the time in business presentations. So I decided to
write this article, to show a range of visualizations that you can use to
explore this kind of information, gaining insights that the average alone
cannot provide. In doing this I hope I can persuade some people to stop only
using averages, and to question averages when they see others doing that.
After all there’s no point eagerly collecting the data you need to be a
data-driven enterprise unless you know how to examine that data
properly.

A strip chart shows all the individual numbers

So the rule is don’t compare averages when you don’t know what the
actual distribution of the data looks like. How can you get a good picture
of the data?

I’ll start with the case above, when we don’t have very many
data points. Often the best way to go for this is a strip chart, which
will show every data point in the different populations.

show code
ggplot(sales, aes(name, d_revenue, color=name)) +
  geom_jitter(width=0.15, alpha = 0.4, size=5, show.legend=FALSE) +
  ylab(label = "revenue increase (%)") +
  geom_hline(yintercept = 0) +
  theme_grey(base_size=30)

With this chart we can now clearly see the lone high point for Bob,
that most of his results are similar to Alice’s worst results, and that Clara
is far more consistent. This tells us far more than the earlier bar chart,
but isn’t really any harder to interpret.

You may then ask, how to plot this nice strip chart? Most people who
want to plot some quick graphs use Excel, or some other spreadsheet. I
don’t know how easy it is to plot a strip chart in the average
spreadsheet, as I’m not much of a spreadsheet user. Based on what I see in
management presentations, it may be impossible, as I hardly ever see one.
For my plotting I use R, which a frighteningly powerful statistics
package, used by people who are familiar with phrases like “Kendall rank
correlation coefficient” and “Mann-Whitney U test”. Despite this fearsome
armory, however, it’s pretty easy to dabble with the R system for simple
data manipulation and graph plotting. It’s developed by academics as
open-source software, so you can download and use it without worrying about
license costs and procurement bureaucracy. Unusually for the open-source
world, it has excellent documentation and tutorials to learn how to use
it. (If you’re a Pythonista, there’s also a fine range of Python libraries
to do all these things, although I’ve not delved much into that
territory.) If you’re curious about R, I have a
summary
in the appendix of how I’ve learned what I know about it.

If you’re interested in how I generate the various charts I show
here, I’ve included a “show-code” disclosure after each chart which shows
the commands to plot the chart. The sales dataframes
used have two columns: name, and d_revenue.

What if we have a larger number of data points to consider? Imagine our
trio are now rather more important, each handling a couple of hundred
accounts. Their distributions still, however show the same basic characteristics, and we
can see that from a new strip chart.

show code
ggplot(large_sales, aes(name, value, color=name)) +
  geom_jitter(width=0.15, alpha = 0.4, size=2, show.legend=FALSE) +
  ylab(label = "revenue increase (%)") +
  geom_hline(yintercept = 0) +
  theme_grey(base_size=30)

One problem with the strip chart, however, is that we can’t see the
average. So we can’t tell whether Bob’s high values are enough to
compensate for this general lower points. I can deal with this by plotting
the mean point on the graph, in this case as a black diamond.

show code
ggplot(large_sales, aes(name, value, color=name)) +
  geom_jitter(width=0.15, alpha = 0.4, size=2, show.legend=FALSE) +
  ylab(label = "revenue increase (%)") +
  geom_hline(yintercept = 0) +
  stat_summary(fun = "mean", size = 5, geom = "point", shape=18, color = 'black') +
  theme_grey(base_size=30)

So in this case Bob’s mean is a bit less than the other two.

This shows that, even though I often disparage those who use means to
compare groups, I don’t think means are useless. My disdain is for those
who only use means, or use them without examining the overall
distribution. Some kind of average is often a useful element of a
comparison, but more often than not, the median is actually the better
central point to use since it holds up better to big outliers like Bob’s.
Whenever you see an “average”, you should always consider which is better:
median or mean?

Often the reason median is such an under-used function is because our tooling
doesn’t encourage use to use it. SQL, the dominant database query
language, comes with a built-in AVG function
that computes the mean. If you want the median, however, you’re usually
doomed to googling some rather ugly algorithms, unless your database has
the ability to load extension functions. If
some day I become supreme leader, I will decree that no platform can have
a mean function unless they also supply a median.

Using histograms to see the shape of a distribution

While using a strip chart is a good way to get an immediate sense of
what the data looks like, other charts can help us compare them in
different ways. One thing I notice is that many people want to use The One
Chart to show a particular set of data. But every kind of chart
illuminates different features of a dataset, and it’s wise to use several
to get a sense of what the data may be telling us. Certainly this is true
when I’m exploring data, trying to get a sense of what it’s telling me.
But even when it comes to communicating data, I’ll use several charts so
my readers can see different aspects of what the data is saying.

The histogram is a classic way of looking at a distribution. Here are
histograms for the large dataset.

show code
ggplot(large_sales, aes(value, fill=name)) +
  geom_histogram(binwidth = 1, boundary=0, show.legend=FALSE) +
  xlab(label = "revenue increase (%)") +
  scale_y_continuous(breaks = c(50,100)) +
  geom_vline(xintercept = 0) +
  theme_grey(base_size=30) +
 facet_wrap(~ name,ncol=1)

Histograms work really well at showing the shape of a single
distribution. So it’s easy to see that Alice’s deals clump into two
distinct blocks, while Clara’s have a single block. Those shapes are
somewhat easy to see from the strip chart too, but the histogram clarifies
the shape.

A histogram shows only one group, but here I’ve shown several together
to do the comparison. R has a special feature for this, which it refers to
as faceted plots. These kind of “small multiples” (a term coined by
Edward Tufte) can be very handy for comparisons. Fortunately R makes them
easy to plot.

Another way to visualize the shapes of the distributions is a density
plot, which I think of as a smooth curve of a histogram.

show code
ggplot(large_sales, aes(value, color=name)) +
  geom_density(show.legend=FALSE) +
  geom_vline(xintercept = 0) +
  xlab(label = "revenue increase (%)") +
  scale_y_continuous(breaks = c(0.1)) +
  theme_grey(base_size=30) +
  facet_wrap(~ name,ncol=1)

The density scale on the y axis isn’t very meaningful to
me, so I tend to remove that scale from the plot – after all the key
element of these are shapes of the distributions. In addition, since the
density plot is easy to render as a line, I can plot all of them on a
single graph.

show code
ggplot(large_sales, aes(value, color=name)) +
  geom_density(size=2) +
  scale_y_continuous(breaks = NULL) +
  xlab(label = "revenue increase (%)") +
  geom_vline(xintercept = 0) +
  theme_grey(base_size=30) 

Histograms and density plots are more effective when there are more
data points, they aren’t so helpful when there’s only a handful (as with
the first example). A bar chart of counts is useful when there are only a few
values, such as the 5-star ratings on review sites. A few years ago Amazon
added such a chart for its reviews, which show the distribution in
addition to the average score.

Boxplots work well with many comparisons

Histograms and density plots are a good way to compare different
shapes of distributions, but once I get beyond a handful of graphs then
they become difficult to compare. It’s also useful to get a sense of
commonly defined ranges and positions within the distribution. This is
where the boxplot comes in handy.

show code
ggplot(large_sales, aes(name, value, color=name)) +
  geom_boxplot(show.legend=FALSE) +
  ylab(label = "revenue increase (%)") +
  geom_hline(yintercept = 0) +
  theme_grey(base_size=30) 

The box plot focuses our attention on the middle range of the data, so
that half the data points are within the box. Looking at the graph we can
see more than half of Bob’s accounts shrank and that his upper quartile is
below Clara’s lower quartile. We also see his cluster of hot accounts at
the upper end of the graph.

The box plot works nicely with a couple of dozen items to compare,
providing a good summary of what the underlying data looks like. Here’s an
example of this. I moved to London in 1983 and moved to Boston a decade
later. Being British, I naturally think about how the weather compares in
the two cities. So here is a chart showing comparing their daily high
temperatures each month since 1983.

show code
ggplot(temps, aes(month, high_temp, color=factor(city))) +
  ylab(label = "daily high temp (°C)") +
  theme_grey(base_size=20) +
  scale_x_discrete(labels=month.abb) +
  labs(color = NULL) +
  theme(legend.position = "bottom") +
  geom_boxplot()

This is an impressive chart, since it summarizes over 27,000 data
points. I can see how the median temperatures are warmer in London during
the winter, but cooler in the summer. But I can also see how the
variations in each month compare. I can see that over a quarter of the
time, Boston doesn’t get over freezing in January. Boston’s upper quartile
is barely over London’s lower quartile, clearly indicating how much colder
it is in my new home. But I can also see there are occasions when Boston
can be warmer in January than London ever is during that winter month.

The box plot does have a weakness, however, in that we can’t see the
exact shape of the data, just the commonly defined aggregate points. This
may be an issue when comparing Alice and Clara, since we don’t see the
double-peak in Alice’s distribution in the way that we do with histogram
and density chart.

There are a couple of ways around this. One is that I can easily
combine the box plot with the strip chart.

show code
ggplot(large_sales, aes(name, value, color=name)) +
  geom_boxplot(show.legend=FALSE, outlier.shape = NA) +
  geom_jitter(width=0.15, alpha = 0.4, size=1, show.legend=FALSE) +
  ylab(label = "revenue increase (%)") +
  stat_summary(fun = "mean", size = 5, geom = "point", shape=18, color = 'black') +
  geom_hline(yintercept = 0) +
  theme_grey(base_size=30) 

This allows me to show both the underlying data, and the important
aggregate values. In this plot I also included the black diamond that I
used before to show the position of the mean. This is a good way to
highlight cases like Bob where the mean and median are quite different.

Another approach is the violin plot, which draws a density plot into
the sides of the boxes.

show code
ggplot(large_sales, aes(name, value, color=name, fill=name)) +
  geom_violin(show.legend=FALSE, alpha = 0.5) +
  ylab(label = "revenue increase (%)") +
  geom_hline(yintercept = 0) +
  theme_grey(base_size=30) 

This has the advantage of showing the shape of the distribution
clearly, so the double peak of Alice’s performance stands right out. As
with density plots, they only become effective with a larger number of
points. For the sales example, I think I’d rather see the points in the
box, but the trade-off changes if we have 27,000 temperature measurements.

show code
ggplot(temps, aes(month, high_temp, fill=factor(city))) +
  ylab(label = "daily high temp (°C)") +
  theme_grey(base_size=20) +
  labs(fill = NULL) +
  scale_x_discrete(labels=month.abb) +
  theme(legend.position = "bottom") +
  geom_violin(color = NA) 

Here we can see that the violins do a great job of showing the shapes
of the data for each month. But overall I find the box chart of this data
more useful. It’s often easier to compare by using significant signposts
in the data, such as the medians and quartiles. This is another case where
multiple plots play a role, at least while exploring the data. The box
plot is usually the most useful, but it’s worth at least a glance at a
violin plot, just to see if reveals some quirky shape.

Summing Up

  • Don’t use just an average to compare groups unless you understand
    the underlying distribution.
  • If someone shows you data with just an average ask: “what does the
    distribution look like?”
  • If you’re exploring how groups compare, use several different plots
    to explore their shape and how best to compare them.
  • If asked for an “average”, check whether a mean or median is better.
  • When presenting differences between groups, consider at least the
    charts I’ve shown here, don’t be afraid to use more than one, and pick
    those that best illustrate the important features.
  • above all: plot the distribution!

Acknowledgments

Adriano
Domeniconi, David Colls, David Johnston, James Gregory, John Kordyback, Julie Woods-Moss, Kevin Yeung, Mackenzie Kordyback, Marco Valtas, Ned Letcher, Pat Sarnacke, Saravanakumar Saminathan, Tiago Griffo, and Xiao Guo

commented on drafts of this article on internal mailing lists.

My experience learning R

I first came across R about 15 years ago, when I did a little work with
a colleague on a statistical problem. Although I did a lot of maths in
school, I shied away from statistics. While I was very interested in the
insights it offers, I was deterred by the amount of calculation it
required. I have this odd characteristic that I was good at maths but not
good at arithmetic.

I liked R, particularly since it supported charts that were hardly
available elsewhere (and I’ve never much liked using spreadsheets). But R
is a platform with neighborhoods dodgy enough to make JavaScript seem
safe. In recent years, however, working with R has become much easier due
to the work of Hadley Whickham – the Baron Haussmann of R. He’s led the
development of the “tidyverse”: a series of libraries that make R very
easy to work with. All the plots in this article use his ggplot2 library.

In recent years I’ve used R more and more for creating any reports that
make use of quantitative data, using R as much for the calculations as for
the plots. Here the tidyverse dplyr library plays a big role. Essentially
it allows me to form pipelines of operations on tabular data. At one level
it’s a collection pipeline on the
rows of the table, with functions to map and filter the rows. It then goes
further by supporting table-oriented operations such as joins and pivots.

If writing such excellent software isn’t enough, he’s also co-written
an excellent book to learn to use R: R for Data
Science
. I’ve found this to be a great tutorial on data analytics,
an introduction to the tidyverse, and a frequent reference. If you’re
at all interested in manipulating and visualizing data, and like to get
hands-on with a serious tool for the job, then this book is a great way to
go. The R community has done a great job with this and other books that help
explain both the concepts and tools of data science. The tidyverse
community has also built an first-rate open-source editing and development
environment called R Studio. I shall say no
more that when working with R, I usually use it over Emacs.

R certainly isn’t perfect. As a programming language it’s shockingly
quirky, and I’ve dared not stray from the tree-lined boulevards of simple
dplyr/ggplot2 pipelines. If I wanted to do serious programming in a
data-rich environment, I’d seriously consider switching to Python. But for
the kinds of data work I do, R’s tidyverse has proven to be an excellent
tool.

Tricks for a good strip chart

There’s a couple of useful tricks that I often reach for when I use a
strip chart. Often
you have data points with similar, or even the same values. If I plot
them naively, I end up with a strip chart like this.

show code
ggplot(sales, aes(name, d_revenue, color=name)) +
  geom_point(size=5, show.legend=FALSE) +
  ylab(label = "revenue increase (%)") +
  geom_hline(yintercept = 0) +
  theme_gray(base_size=30)

This plot is still better than that first bar chart, as it clearly
indicates how Bob’s outlier is different to his usual performance. But
with Clara having so many similar values, they all clump on top of each
other, so you can’t see how many there are.

The first of my tricks I use is to add some jitter. This adds some
random horizontal movement to the points of the strip chart, which allows
them to spread out and be distinguished. My second is to make the points
partly transparent, so we can see when they plot on top of each other.
With these two tricks, we can properly appreciate the number and position
of the data points.

Exploring the bin width for histograms

A histogram works by putting the data into bins. So if I have a bin
width of 1%, then all accounts whose revenue increase is between 0 and 1%
are put into the same bin, and the graph plots how many are in
each bin. Consequently the width (or amount) of bins makes a big
difference to what we see. If I make larger bins for this dataset, I get
this plot.

show code
ggplot(large_sales, aes(value, fill=name)) +
  geom_histogram(binwidth = 5, boundary=0,show.legend=FALSE) +
  scale_y_continuous(breaks = c(50,100)) +
  xlab(label = "revenue increase (%)") +
  geom_vline(xintercept = 0) +
  theme_grey(base_size=30) +
  facet_wrap(~ name,ncol=1)

Here the bins are so wide that we can’t see the two peaks of Alice’s
distribution.

The opposite problem is that if the bins are too narrow the plot
becomes noisy. So when I plot a histogram, I experiment with the bin
width, trying different values to see which ones help expose the
interesting features of the data.


سایت شرط بندی
سایت پیشبینی
سایت شرط بندی معتبر