跟随,学习,进步

Optimizing a Vulkan Program Part 1: Introduction

2019-05-22 23:15:57 Reddit programming

submitted by /u/vazgriz [link] [comments]


Document your RegEx

2019-05-22 21:56:39 Reddit programming

submitted by /u/themattman18 [link] [comments]


Alan Kay Did Not Invent Objects

2019-05-22 20:44:43 Reddit programming

submitted by /u/yogthos [link] [comments]


My Friend is trying to get feedback on this guide for Junior Devs?

2019-05-22 20:44:14 Reddit programming

submitted by /u/MartyLouis223 [link] [comments]


Athena: Dropbox's automated build health management system

2019-05-22 19:49:35 Reddit programming

submitted by /u/waddupbrah [link] [comments]


I created an application that will download video clips from Reddit and compile them into montages. Feel free to checkout my GitHub repo, and give me feedback. (X-Post)

2019-05-22 19:26:52 Reddit programming

submitted by /u/cowvinklien [link] [comments]


Google and Binomial Partner to Open-Source Basis Universal Texture Format

2019-05-22 19:16:42 Reddit programming

submitted by /u/Saticmotion [link] [comments]


GitLab 11.11 released with Multi-Assignment for MRs and container enhancements

2019-05-22 18:54:21 Reddit programming

submitted by /u/git-blame [link] [comments]


Commas go AFTER newlines (and other insane ramblings on indentation)

2019-05-22 17:39:29 Reddit programming

submitted by /u/seanmorris [link] [comments]


Curiosity Killed the Mario - Training a Software Agent to Explore Super Mario Bros

2019-05-22 17:22:55 Reddit programming

submitted by /u/MichaelBurge [link] [comments]


How to earn your Macroeconomics and Finance white belt (as a software developer)

2019-05-22 17:22:08 Reddit programming

submitted by /u/unbalancedparen [link] [comments]


Implementing a Convolutional Neural Net from scratch in Python

2019-05-22 17:15:40 Reddit programming

submitted by /u/vzhou842 [link] [comments]


How to use Selenium to automate browser interactions

2019-05-22 17:14:04 Reddit programming

submitted by /u/bnjmrtn [link] [comments]


A Beginner’s Guide to Webpack

2019-05-22 17:00:52 Ivaylo Gerchev

Nowadays, we’re forced to use many accessory tools to facilitate, speed up and optimize our web development workflow. Often though, such tools add an extra layer of complexity into the stack. As a result, we need to utilize additional time and effort to learn, understand and use these tools correctly. The same is true for webpack. When using webpack for the first time, it can be difficult to understand how it works and how it should be used. Although it has good documentation, it can be daunting for novices, and it has a steep learning curve. However, webpack is worth learning and can save considerable time and effort in the long run. In this tutorial, I’ll introduce all the core concepts to help you get started. Note: in this tutorial I’ve used webpack 4.30. What Is Webpack? As its core, webpack is a static module bundler. In a particular project, webpack treats all files and assets as modules. Under the hood, it relies on a dependency graph. A dependency graph describes how modules relate to each other using the references (require and import statements) between files. In this way, webpack statically traverses all modules to build the graph, and uses it to generate a single bundle (or several bundles) — a JavaScript file containing the code from all modules combined in the correct order. “Statically” means that, when webpack builds its dependency graph, it doesn’t execute the source code but stitches modules and their dependencies together into a bundle. This can then be included in your HTML files. Now, to expand the above cursory overview, let’s explore the main concepts webpack uses. Webpack Main Concepts Webpack has some main concepts which we need to understand clearly before digging in its practical implementation. Let’s examine them one by one: Entry. The entry point is the module, which webpack uses to start building its internal dependency graph. From there, it determines which other modules and libraries that entry point depends on (directly and indirectly) and includes them in the graph until no dependency is left. By default, the entry property is set to ./src/index.js, but we can specify a different module (or even multiple modules) in the webpack configuration file. Output. The output property instructs webpack where to emit the bundle(s) and what name to use for that file(s). The default value for this property is ./dist/main.js for the main bundle and ./dist for other generated files — such as images, for example. Of course, we can specify different values in the configuration depending on our needs. Loaders. By default, webpack only understands JavaScript and JSON files. To process other types of files and convert them into valid modules, webpack uses loaders. Loaders transform the source code of non-JavaScript modules, allowing us to preprocess those files before they’re added to the dependency graph. For example, a loader can transform files from a CoffeeScript language to JavaScript or inline images to data URLs. With loaders we can even import CSS files directly from our JavaScript modules. Plugins. Plugins are used for any other task that loaders can’t do. They provide us with a wide range of solutions about asset management, bundle minimization and optimization, and so on. Mode. Typically, when we develop our application we work with two types of source code — one for the development build and one for the production build. Webpack allows us to set which one we want to be produced by changing the mode parameter to development, production or none. This allows webpack to use built-in optimizations corresponding to each environment. The default value is production. The none mode means that there won’t be used any default optimization options. To learn more about the options webpack uses in development and production mode, visit the mode configuration page. How Webpack Works In this section we’ll examine how webpack works. Even a simple project contains HTML, CSS and JavaScript files. Also, it can contains assets such as fonts, images, and so on. So, a typical webpack workflow would include setting up an index.html file with the appropriate CSS and JS links, and the necessary assets. Also, if you have many CSS and JS modules which depend on each other, they need to be optimized and properly combined in one unit ready for production. To do all this, webpack relies on configuration. Although webpack 4 comes with reasonable defaults, for any non-trivial project you’ll need to provide a special configuration file webpack.config.js, which describes how the files and assets should be transformed and what kind of output should be generated. This file can quickly become quite monolithic, which makes it hard to understand how webpack does its job unless you know the main concepts behind its working. Based on the provided configuration, webpack starts from the entry points and resolves each module it encounters while constructing the dependency graph. If a module contains dependencies, the process is performed recursively against each dependency until the traversal has completed. Then webpack bundles all project’s modules into a small number of bundles — usually, just one — to be loaded by the browser. Getting Started Note: you can find the files for our project in the GitHub repo. Now that we have solid theoretical foundation, let’s implement it in practice. To start, we’ll create a new directory and switch to it. Then we’ll initialize a new project: mkdir learn-webpack cd learn-webpack npm init -y Next, we need to install webpack and webpack CLI locally: npm install webpack webpack-cli --save-dev Now, the content of the generated package.json should be similar to the following: { "name": "learn_webpack", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "webpack": "^4.30.0", "webpack-cli": "^3.3.0" } } Besides bundling modules, webpack can be used as a simple task runner. We can create webpack tasks by including the name of our task followed by its instructions in the scripts section of the package,json file. Let’s try this now. Open package.json and change the scripts object to the following: "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "webpack --mode development", "build": "webpack --mode production" }, Within the scripts property, webpack allows us to reference locally installed npm packages by their names. We use that and the --mode flag to define dev and build tasks, which will run webpack in development (npm run dev) and production (npm run build) mode respectively. Before we test the tasks we’ve just created, let’s create a src directory and put an index.js file in it so that it contains console.log("Hello webpack");. Now we can already to run the dev task to start webpack in development mode: $ npm run dev > learn_webpack@1.0.0 dev C:\Users\User\Webpack\learn_webpack > webpack --mode development Hash: 5bb3bdc1efd7b7f4b627 Version: webpack 4.30.0 Time: 226ms Built at: 2019-04-16 17:48:32 Asset Size Chunks Chunk Names main.js 3.8 KiB main [emitted] main Entrypoint main = main.js [./src/index.js] 27 bytes {main} [built] Great! It works as expected. But to verify that we get the correct output, we need to display the result in the browser. To do that, let’s create an index.html file in the dist directory: Getting Started Now, if we open the file in the browser, we should see the Hello webpack message in the console. So far, so good. But writing our index.html file manually can be problematic in some cases. For example, if we change the name of our entry point, the generated bundle will be renamed, but our index.html file will still reference the old name. So, we’ll need to update our HTML file manually every time we rename an entry point or add new one. Fortunately, we can easily fix that with the html-webpack-plugin. Let’s install it now: npm install html-webpack-plugin --save-dev At this point, to activate the plugin, we need to create a webpack.config.js file in the root directory with the following content: const HtmlWebpackPlugin = require("html-webpack-plugin"); module.exports = { plugins: [ new HtmlWebpackPlugin({ title: "Webpack Output", }), ], }; As you can see, to activate a webpack plugin, we need to include it and then add it to the plugins array. If needed, we also pass options to the plugin. Let’s run our build now to see what will happen: $ npm run build > learn_webpack@1.0.0 build C:\Users\User\Webpack\learn_webpack > webpack --mode production Hash: e56a796f5ccfebcc8270 Version: webpack 4.30.0 Time: 1088ms Built at: 2019-04-16 20:44:47 Asset Size Chunks Chunk Names index.html 183 bytes [emitted] main.js 956 bytes 0 [emitted] main Entrypoint main = main.js [0] ./src/index.js 27 bytes {0} [built] Child html-webpack-plugin for "index.html": 1 asset Entrypoint undefined = index.html [2] (webpack)/buildin/global.js 472 bytes {0} [built] [3] (webpack)/buildin/module.js 497 bytes {0} [built] + 2 hidden modules Let’s open the index.html. As we can see, the plugin automatically creates an updated index.html file for us which uses the title option from the configuration: Webpack Output Let’s now expand our project and specify custom names for the entry and output properties. In webpack.config.js we add the following before the plugins property: entry: './src/app.js', output: { filename: '[name].bundle.js', path: path.resolve(__dirname, 'dist') }, Now, we’ll create an src/component.js file: export default (text = "Hello webpack") => { const element = document.createElement("p"); element.innerHTML = text; return element; }; Next, we rename index.js to app.js to reflect our changes, and swap its content with the following: import component from "./component"; document.body.appendChild(component()); Now, let’s run webpack in production mode: $ npm run build > learn_webpack@1.0.0 build C:\Users\User\Webpack\learn_webpack > webpack --mode production Hash: 9f78936f8a2a21061f0b Version: webpack 4.30.0 Time: 1689ms Built at: 2019-04-17 23:43:40 Asset Size Chunks Chunk Names index.html 190 bytes [emitted] main.bundle.js 1.04 KiB 0 [emitted] main Entrypoint main = main.bundle.js [0] ./src/app.js + 1 modules 227 bytes {0} [built] | ./src/app.js 79 bytes [built] | ./src/component.js 148 bytes [built] Child html-webpack-plugin for "index.html": 1 asset Entrypoint undefined = index.html [2] (webpack)/buildin/global.js 472 bytes {0} [built] [3] (webpack)/buildin/module.js 497 bytes {0} [built] + 2 hidden modules Let’s examine and clarify the information from the webpack output. Beginning from the top, we see the hash of the build, webpack version, and the time it took to execute the build. Next, we see the files generated in the dist directory (index.html and main.bundle.js). Below them, we see the entry module (app.js) and its dependency (component.js). The output after Child html-webpack-plugin for "index.html": is related to the internal work of the html-webpack-plugin and we can safely ignore it. So now, in the dist folder, we have the newly generated bundle file main.bundle.js. If we open index.html in the browser, we should see Hello webpack displayed on the page. Also, if we check the source of index.html, we’ll see that the value of the src property in the script tag is updated to main.bundle.js. The post A Beginner’s Guide to Webpack appeared first on SitePoint.

tags: JavaScript,Web,bundler,static module bundler,webpack


Forget fancy chefs and foosball, what developers really want is balance & growth

2019-05-22 16:57:05 Reddit programming

submitted by /u/Darkglow666 [link] [comments]


Using mocked APIs to increase developer productivity

2019-05-22 16:38:51 Reddit programming

submitted by /u/asantos00 [link] [comments]


Python: Check if String Contains Substring

2019-05-22 16:38:00 Jacob Stopak

In this article, we'll examine four ways to use Python to check whether a string contains a substring. Each has their own use-cases and pros/cons, some of which we'll briefly cover here: 1) The in Operator The easiest way to check if a Python string contains a substring is

tags: python


Migrating from Flow to Typescript: Why ? How ? Worth it ?

2019-05-22 16:22:09 Reddit programming

submitted by /u/troll-des-montagnes [link] [comments]


Tanker: End-to-End encryption SDK for Javascript

2019-05-22 16:16:17 Reddit programming

submitted by /u/dmerej [link] [comments]


WebAssembly at eBay: A Real-World Use Case

2019-05-22 16:09:30 Reddit programming

submitted by /u/ColinEberhardt [link] [comments]