Pull to refresh

Development

Show first
Period
Level of difficulty

Automatically obtaining SSL certificates by Let's Encrypt using DNS-01 challenge and AWS

Reading time5 min
Views5.8K

This post describes the steps needed for setting up automatic SSL certificates creation and renewal, using Let's Encrypt as the automated Certificate Authority, which provides a well-maintained API.
acme-dns-route53 is the tool to obtain SSL certificates from Let’s Encrypt using DNS-01 challenge with Route53 and Amazon Certificate Manager by AWS. acme-dns-route53 also has the built-in functionality for using this tool inside AWS Lambda, and this is what we are going to do.

Read more →

How to Develop A User-Friendly Application

Reading time3 min
Views2.1K


Mobile apps are necessary for every business today. They are the tools that bridges the gap between consumers and business, makes it easier for clients to view the trends, and offers an easy chance to the consumers to know the business in person. Having so many advantages already, why it is important to keep app’s user-friendliness as one of the most important points?

There are a number of reasons for developing a user-friendly mobile application. The users today are more eager to have a superb experience while browsing through the application. And for the same reason the UI and the app UX holds prominence for every mobile app development company. No matter how successfully your app has been designed, it is important to offer a unique browsing experience to the users.
Read more →

Version 12 Launches Today! (And It’s a Big Jump for Wolfram Language and Mathematica)

Reading time47 min
Views3.2K


Quick links


The Road to Version 12
First, Some Math
The Calculus of Uncertainty
Classic Math, Elementary and Advanced
More with Polygons
Computing with Polyhedra
Euclid-Style Geometry Made Computable
Going Super-Symbolic with Axiomatic Theories
The n-Body Problem
Language Extensions & Conveniences
More Machine Learning Superfunctions
The Latest in Neural Networks
Computing with Images
Speech Recognition & More with Audio
Natural Language Processing
Computational Chemistry
Geographic Computing Extended
Lots of Little Visualization Enhancements
Tightening Knowledgebase Integration
Integrating Big Data from External Databases
RDF, SPARQL and All That
Numerical Optimization
Nonlinear Finite Element Analysis
New, Sophisticated Compiler
Calling Python & Other Languages
More for the Wolfram “Super Shell”
Puppeting a Web Browser
Standalone Microcontrollers
Calling the Wolfram Language from Python & Other Places
Linking to the Unity Universe
Simulated Environments for Machine Learning
Blockchain (and CryptoKitty) Computation
And Ordinary Crypto as Well
Connecting to Financial Data Feeds
Software Engineering & Platform Updates
And a Lot Else…

Read more →

What happens behind the scenes C#: the basics of working with the stack

Reading time6 min
Views7.6K
I propose to look at the internals that are behind the simple lines of initializing of the objects, calling methods, and passing parameters. And, of course, we will use this information in practice — we will subtract the stack of the calling method.

Disclaimer


Before proceeding with the story, I strongly recommend you to read the first post about StructLayout, there is an example that will be used in this article.

All code behind the high-level one is presented for the debug mode, because it shows the conceptual basis. JIT optimization is a separate big topic that will not be covered here.

I would also like to warn that this article does not contain material that should be used in real projects.

First — theory


Any code eventually becomes a set of machine commands. Most understandable is their representation in the form of Assembly language instructions that directly correspond to one (or several) machine instructions.

Read more →

Live Share now included with Visual Studio 2019

Reading time2 min
Views1.1K

We’re excited to announce the general availability of Visual Studio Live Share, and that it is now included with Visual Studio 2019! In the year since Live Share began its public preview, we’ve been working to enhance the many ways you collaborate with your team. This release is the culmination of that work, and all the things we’ve learned from you along the way.


If you haven’t heard of Live Share, it’s a tool that enables real-time collaborative development with your teammates from the comfort of your own tools. You’re able to share your code, and collaboratively edit and debug, without needing to clone repos or set up environments. It’s easy to get started with Live Share.


Read more →

Memory and Span pt.3

Reading time10 min
Views2.7K


Memory<T> and ReadOnlyMemory<T>


There are two visual differences between Memory<T> and Span<T>. The first one is that Memory<T> type doesn’t contain ref modifier in the header of the type. In other words, the Memory<T> type can be allocated both on the stack while being either a local variable, or a method parameter, or its returned value and on the heap, referencing some data in memory from there. However, this small difference creates a huge distinction in the behavior and capabilities of Memory<T> compared to Span<T>. Unlike Span<T> that is an instrument for some methods to use some data buffer, the Memory<T> type is designed to store information about the buffer, but not to handle it. Thus, there is the difference in API.


  • Memory<T> doesn’t have methods to access the data that it is responsible for. Instead, it has the Span property and the Slice method that return an instance of the Span type.
  • Additionally, Memory<T> contains the Pin() method used for scenarios when a stored buffer data should be passed to unsafe code. If this method is called when memory is allocated in .NET, the buffer will be pinned and will not move when GC is active. This method will return an instance of the MemoryHandle structure, which encapsulates GCHandle to indicate a segment of a lifetime and to pin array buffer in memory.

This chapter was translated from Russian jointly by author and by professional translators. You can help us with translation from Russian or English into any other language, primarily into Chinese or German.

Also, if you want thank us, the best way you can do that is to give us a star on github or to fork repository github/sidristij/dotnetbook.
Read more →

Windows Virtual Desktop now in public preview on Azure

Reading time1 min
Views1.4K

We recently shared the public preview of the Windows Virtual Desktop service on Azure. Now customers can access the only service that delivers simplified management, multi-session Windows 10, optimizations for Office 365 ProPlus, and support for Windows Server Remote Desktop Services (RDS) desktops and apps. With Windows Virtual Desktop, you can deploy and scale your Windows desktops and apps on Azure in minutes, while enjoying built-in security and compliance.


Image of women on her desktop in the workplace

Read more →

Indexes in PostgreSQL — 3 (Hash)

Reading time7 min
Views19K
The first article described PostgreSQL indexing engine, the second one dealt with the interface of access methods, and now we are ready to discuss specific types of indexes. Let's start with hash index.

Hash


Structure


General theory


Plenty of modern programming languages include hash tables as the base data type. On the outside, a hash table looks like a regular array that is indexed with any data type (for example, string) rather than with an integer number. Hash index in PostgreSQL is structured in a similar way. How does this work?

As a rule, data types have very large ranges of permissible values: how many different strings can we potentially envisage in a column of type «text»? At the same time, how many different values are actually stored in a text column of some table? Usually, not so many of them.

The idea of hashing is to associate a small number (from 0 to N−1, N values in total) with a value of any data type. Association like this is called a hash function. The number obtained can be used as an index of a regular array where references to table rows (TIDs) will be stored. Elements of this array are called hash table buckets — one bucket can store several TIDs if the same indexed value appears in different rows.

The more uniformly a hash function distributes source values by buckets, the better it is. But even a good hash function will sometimes produce equal results for different source values — this is called a collision. So, one bucket can store TIDs corresponding to different keys, and therefore, TIDs obtained from the index need to be rechecked.
Read more →

How to promote an incremental game? Free of charge, fast and effective*

Reading time1 min
Views1.8K
If you ever created a game, you probably ran into the same problem as a lot of game developers before you: nobody knows about your game. In the article, I will tell you how to promote an incremental** game for free, fast and somehow effective.
Read more →

Top 10 Mobile App Development Companies for Enterprise & Startups

Reading time7 min
Views5.3K

image


The mobile app developers are exceptionally intrigued by conveying 100% fulfillment outcome for the entrepreneurs. By having top 10 mobile app development companies, it is crucial for working with an effective outcome and does the worldwide system. In this way, get assistance from the professional mobile app developers and grow the business in like manner.

Read more →

SAPUI5 for dummies part 5: A complete step-by-step exercise

Reading time4 min
Views6.8K


Introduction & Recap


In the previous blog post, we learned how to create a second level of drill-down (detail of detail) and how to interact with OData and ODataModel (v2) in order to delete a database record.


What will be covered on this exercise


With Part 5 of this series of blog posts, we will learn how to create a SimpleForm within a Dialog that will allow us to update the information of a Sales Order Item.


Before updating the database order we have to check that everything typed by the user validates our constraints.


  • ODataModel: we have already used it to display server-side information about our Business Partner, Sales Order, and Sales Order Items. We’ve also used it to delete a database record. We’re now going to use it to update a record thanks to the submitChanges method or remove what we’ve done with the resetChanges method.
  • Expression Binding: an enhancement of the SAPUI5 binding syntax, which allows for providing expressions instead of custom formatter functions
  • SimpleForm: a layout that allows users to create a pixel-perfect form
Read more →

ChatGPT-4: How to use it for free

Reading time3 min
Views5.9K

ChatGPT-4, the latest model from OpenAI, boasts impressive capabilities like text generation, question answering, problem-solving, coding, and even image analysis. However, accessing it requires a $20 monthly subscription on OpenAI's website. For residents of certain countries, accessing the service poses additional challenges due to restrictions, necessitating the use of foreign payment methods and VPNs.

We've created a list of the top-4 services that offer completely free access to ChatGPT-4. This article will delve into the advantages and limitations of each option, comparing them side-by-side.

Read more

Langton's ant: a mystery cellular automaton

Reading time4 min
Views3K

The life of Langton's Ant seems sad and lonely, but, as we'll soon discover, he is not ready to put up with such an outrageous situation and is trying his best to escape. American scientist Christopher Langton invented his ant back in 1986. Since then, no one has been able to explain the strange behavior of this mysterious model...

Read more

How to put the whole world into a regular laptop: PostgreSQL and OpenStreetMap

Level of difficultyEasy
Reading time12 min
Views3.3K

When a person used to say that he controls the whole world, he was usually placed in the next room with Napoleon Bonaparte. I hope that these times are in the past and everyone can analyze the geodata of the entire Earth and get answers to their global questions in minutes and seconds. I published Openstreetmap_h3 - my project, which allows you to perform geoanalytics on data from OpenStreetMap in PostGIS or in any query engine that can work with Apache Arrow / Parquet.

First of all, I say hello to the haters and skeptics. What I developed is really unique and solves the problem of transforming and analyzing geodata using the usual and familiar tools available to every analyst and data science specialist without bigdata, GPGPU, FPGA. What looks easy to use and code now is my personal project where I have invested my vacations, weekends, sleepless nights and a lot of personal time over the past 3 years. Maybe I will share the background of the project and the rake that I went through, but first I will still describe the end result.

Read more

How to create bilingual books. Part 2. Lingtrain Alignment Studio

Reading time6 min
Views3.6K

title


How to make a parallel book for language learning. Part 1. Python and Colab version


This is a second article on making parallel books. Today we will use the more advanced tool which will bring rich UI functionality. Lingtrain Alignment Studio is a web application written on Vue and Python. The main purpose of it is to extract the parallel corpora from two raw texts and make a bilingual (or even multilingual) parallel book. This is an open-source project and I will be glad to hear all of your bright ideas. Links to the sources and our community contacts can be found below. Los geht's!


Setup


The app is packed into the docker container. It's a simple technology to deploy your stuff anywhere from the server to your local machine. It's available across all the operating systems. So at first, you need a docker installed locally. Then you need to run two simple commands. The first will download the container:


docker pull lingtrain/aligner:v4

And the second one will run the application:


docker run -v C:\app\data:/app/data -v C:\app\img:/app/static/img -p 80:80 lingtrain/aligner:v4

C:\app\data and C:\app\img — your local folders.


The app will be available on the 80th port. Let's open the localhost page in your favorite browser.


Lingtrain app 1


We will make three simple steps: Load, Align, Create

Continue reading

Algorithms in Go: Dutch National Flag

Reading time3 min
Views2.9K

The flag of the Netherlands consists of three colors: red, white and blue. Given balls of these three colors arranged randomly in a line (it does not matter how many balls there are), the task is to arrange them such that all balls of the same color are together and their collective color groups are in the correct order.

For simplicity instead of colors red, white, and blue we will be dealing with ones, twos and zeroes.

Let's start with our intuition. We have an array of zeroth, ones, and twos. How would we sort it? Well, we could put aside all zeroes into some bucket, all ones into another bucket, and all twos into the third. Then we can fetch all items from the first bucket, then from the second, and from the last bucket, and restore all the items. This approach is perfectly fine and has a great performance. We touch all the elements when we iterate through the array, and then we iterate through all the elements once more when we "reassamble" the array. So, the overall time complexity is O(n) + O(n) ~= O(n). The space complexity is also O(n) as we need to store all items in the buckets.

Can we do better than that? There is no way to improve our time complexity. However, we can think of a more efficient algorithm in regard to space complexity. How would we solve the problem without the additional buckets?

Let's make a leap of faith and pretend that somehow we were able to process a part of the array. We iterate through part of the array and put encountered zeroes and ones at the beginning of the array, and twos at the end of the array. Now, we switched to the next index i with some unprocessed value x. What should we do there?

Read more

Distributed File Systems

Reading time9 min
Views10K

The Big Data Tools plugin seamlessly integrates HDFS into your IDE and provides access to different cloud storage systems (AWS S3, Minio, Linode, Digital Open Space, GS, Azure). But is this the end? Have we implemented everything and now progress has stopped? Of course not.


In this short digest, we'll take a look at 15 popular distributed file systems available on the market and try to get a sense of their individual advantages.


Almost all of these systems are free or open-source, and you can find the sources on GitHub. The sites of these projects, their documentation, and online reviews provide most of the information we’ll consider here. Other than HDFS, none of these technologies have been implemented yet in Big Data Tools. But who knows? Perhaps someday we'll see them in our plugin.


Read more →

Compensation for Error Caused by Limited Gain-Bandwidth of Operational Amplifiers in Low-pass Filters

Reading time6 min
Views4.7K
Amateur vs Pro

An operational amplifier has the internal compensation circuit for stability which limits its working bandwidth. Frequency response of the compensated Op Amp has slope of −6 dB/octave or −20 dB/decade. Unity gain frequency defines the bandwidth where the Op Amp is able to amplify a signal. If we multiply the gain and frequency at any point, the result is the same, allowing us to use this parameter to select the appropriate Op Amp. It is called Gain-Bandwidth Product, GBW or GBP. The limited open-loop gain introduces a closed-loop gain and phase error.

But we want to optimize our circuits, right?
Read more →

JavaCC 21 Parser Generator

Reading time4 min
Views2.6K

JavaCC 21 is a continuation of work on the venerable JavaCC parser generator, originally developed at Sun Microsystems in the 1990’s and released under a liberal open source license in 2003. It is currently the most advanced version of JavaCC. It has many feature enhancements (with more to come soon) and also generates much more modern, readable Java code. Also, certain key bugs have finally been fixed. (N.B. The “21” in JavaCC 21 is not a version number. It is simply part of the project name and means that this is a JavaCC for the 21st century!)

Read more →