My First Production Isomorphic React Graphql Project 31 May 2016

Total Page:16

File Type:pdf, Size:1020Kb

My First Production Isomorphic React Graphql Project 31 May 2016 Fraser Xu My First Production Isomorphic React Graphql Project 31 May 2016 The story During the past few weeks, I’ve been given the opportunity to rebuild the front-end of a project with “modern approach” to replace an existing CoffeeScript, jQuery, Bower based app running on Ruby on Rails. After about 2 sprints of work(2 weeks for each sprint), we shipped our first version to production last week. Before I started to share my experience, I’d like to give an overview of the architecture for the project. The current stack Library View React State send-actions(like Redux, but management simper) Date fetching GraphQL, Relay Route React-Router Assets serving Webpack Precompile JS Babel Node.js(for server side Server rendering React) Why the current stack? I’ve worked on lots of different projects before with different stacks. And I always have the idea to not use any boilerplate in mind when start a new project. Boilerplates are usually built by and for people with different requirements for a project, and none of them are identical to the one you are trying to build. So usually I will only keep a list of well maintained boilerplate project, and only use them as a reference when my own stack gets into trouble. The new project has a few requirements: Server side rendering for progressive enhanced experience so the page could work for user without JavaScript SEO, we are mainly an e-commercial website, so SEO is the number one priority The app needs to talk to a couple of micro- services, and tokens are usually stored on the server for safety reasons UI state should persist from url, not only for SEO, but also for a better user experience Fast iteration time, to move fast and delivery better user experience Improve performance, the short time we delivery page to user, the longer we can keep the user on the website There are also other requirements which are not for business, and most of them are actually for a better developer experience. Babel. For use a couple of handy syntax today that are only available in future browser Webpack. For compiling assets, hot code load, uglify Modern JavaScript libraries that have best practices in the community With the above requirements, I started from the simplest hello world express server, and deployed it to Heroku. The other day I started to build the static part of the page, and since the code need to render from the server side, I installed React and render a few of Header and Footer component and rendered them on server with React.renderToString . Since I also need to have other pages like 404 , 500 , I added React-Router to have the router support. It works super fine and I love what I did so far. But I think I forget to mention the setup I need to make in order to make those 3 libraries to work for both browser and server. Here’s the dependencies list: babel-cli babel-core babel-loader babel-plugin-transform-runtime babel-preset-es2015 babel-preset-react babel-preset-stage-0 babel-register react react-dom react-router react-hot-loader webpack webpack-dev-server And along with them I will need to have 3 webpack configs. webpack.client.config.js webpack.server.config.js webpack.dev.config.js And another .babelrc which include the babel plugins. I’ve used Webpack in several projects, but it stills feels very hard to make it right each time I do it again. I’m using lots of plugins for different purposes in my configs, but to be honest I can’t say I know what exactly what those individual plugs does in the project. Some of them are inherits from Babel 5 and I may know what it does, but others may be something totally new only in Babel 6 , I don’t have the time to go through each of them. It’s actually an OK experience so far, I managed to have a nice working demo. And I could show my manager what I’ve achieved so far in a rather short time. The next step is to be able to load dynamic content through our api-gateway. Since we only want to keep the token for internally use and don’t want to expose it in the browser, we had the idea to build a simple “proxy” server which re-direct the request from the browser and then pass the request together with token saved on the server to make a request to the api-gateway. In addition, if a page need to load multiple results, we could make them together into one and have a custom api endpoint. For example if we want to get the stats total user and total items on the page, normally we will need to do two individual requests, but with the “proxy api” we could do this via a /api/stats so the browser only need to make one request. This could help user on a mobile device since network request on the server side is relatively reliable and faster. When we get to this stage, we came to the idea of trying our GraphQL, because the “proxy” server is similar to what GraphQL wants to achieve, and in the future we will have more complex logic, the benefit of small pageload and flexible query language could help us in long term. Given that this is an experiment project so we decide to try it out. To get started, we need to install the following packages, and it still kind of making sense to do so: express-graphql graphql react-relay graphql-relay babel-relay-plugin Oh, wait! Since we are using react-router , we also need a tool to fetch the data based on the current router so we could fetch all the data before rendering the page: react-router-relay And, last but not least. We are doing isomorphicuniversal app, so we still need to do something to make them work on server side, let’s install some more other plugins: isomorphic-relay isomorphic Okay, I think we are almost there, we’ve got almost every tool we need. We’re going to ship the product to production. With this setup, I got problems that does not belong to any of the framework itself, but how to make them work together. I’ve heard lots of success stories for isomorphic application, I’ve also heard people talking how awesome GraphQL and Relay is for data fetching. But I can hardly find any live example of using all of them together. Here’s a few pain point I met while hooking them together: process.env management for application running in different environment(dev, ci, staging, production), most boilerplate project do not cover that process.env management for isomorphic applications, using them with Webpack is tricky because it’s mostly design for client- side code, and convert variables from variables to strings and then back to variables to make them work for both env debug with source map support for compiled code for different environment the .babelrc file that varies on different environment Luckily, with enough time spend on those problems and wonderful resources over the internet, I managed to make the whole stack working, and we shipped it to production last Friday. After shipping it to production Yes, please hold on and stop telling me you should never ship something to production on Friday. This is something we all know as developer, there’s a few assumptions that we’ve made when ship the code: We have run the code on our staging and production for 1-2 weeks we have complete monitoring services that show the metrics of the app It’s a shiny new stack and we can’t wait until next week to ship it And those assumptions are wrong. All those metrics we have are not facing really user, it’s behind a domain hosted on Heroku app, and we’re the only user who knows about it. And once we resolved the DNS to use the new domain(which takes about 1 hour to take effect), we started to get some new metrics from our tracking services. It was all good at the beginning. But not until a few hours later, we found that the memory usage of the server keeps going up. Even though I was almost sure there’s a memory leak somewhere in our code, but with this shiny new stack I had no idea what could go wrong as there’s so many possibilities. Normally you could just revert your code to a previous working commit and do a re-deploy, but we don’t even have one. I ended up sitting in front of my laptop the whole Friday night to watch the memory usage goes up and I restarted again, and wait until it goes up to restarted it. The other day with the help from some of my nodejs developer friends, I added a process management tool called pm2 which restart the server when memory goes to a max_memory_restart limit so I could have time to have a rest and time to figure out what’s going on. But pm2 could not help fix the memory leak issue, so the rest of the week I started to look at nodejs profiling solutions and find out a few technicals to find potential memory leak. It’s not the topic of this post but all I can tell is that is hard.
Recommended publications
  • Air Quality Monitoring Toolkit: Assessing Second-Hand Smoke in Hospitality Venues
    Air Quality Monitoring Toolkit: Assessing Second-Hand Smoke in Hospitality Venues Authors: Dr Angela Jackson-Morris, Department of Tobacco Control, The International Union Against Tuberculosis and Lung Disease, Edinburgh, Scotland; Dr Sean Semple, Scottish Centre for Indoor Air, Respiratory Group, Division of Applied Health Sciences, University of Aberdeen, Aberdeen, Scotland; Ruaraidh Dobson, Scottish Centre for Indoor Air, Child Health, University of Aberdeen, Aberdeen, Scotland. About the International Union Against Tuberculosis and Lung Disease (The Union): For nearly 100 years, The Union has drawn from the best scientific evidence and the skills, expertise and reach of its staff, consultants and membership in order to advance solutions to the most pressing public health challenges affecting people living in poverty around the world. With nearly 17,000 members and subscribers from 156 countries, The Union has its headquarters in Paris and regional offices in Africa, the Asia Pacific, Europe, Latin America, North America and South-East Asia. The Union’s scientific departments focus on tuberculosis and HIV, lung health and non- communicable diseases, tobacco control and operational research. For more information on The Union’s tobacco control work please visit www.tobaccofreeunion.org or follow us on Twitter @TheUnion_TC. Contact: The International Union Against Tuberculosis and Lung Disease (The Union) Department of Tobacco Control 8 Randolph Crescent Edinburgh UK EH3 7TH T: 0131 240 0252 E: [email protected] About the University of Aberdeen: Founded in 1495, the University of Aberdeen is Scotland's third oldest and the UK's fifth oldest university, and is consistently ranked among the top 1 percent of the world's universities.
    [Show full text]
  • Open Source on IBM I Webinar Series Day 2 ERWIN EARLEY ([email protected]), SR
    Open Source on IBM i Webinar Series Day 2 ERWIN EARLEY ([email protected]), SR. SOLUTIONS CONSULTANT, PERFORCE, NOVEMBER 2019 2 | COMMON Webinar Series: Open Source on IBM i | November 2019 zend.com Day 1 Review • Introduction to Open Source on IBM i • Why is Open Source on IBM i Important • Understanding the PASE environment as the enabler of Open Source on IBM i • Getting Familiar with the PASE environment 2 | Zend by Perforce © 2019 Perforce Software, Inc. zend.com 3 | COMMON Webinar Series: Open Source on IBM i | November 2019 zend.com Day 2 Agenda • Setting up OSS EcoSystem on IBM i – ACS version • Exploring Containers on IBM i • Managing Open Source on IBM i • Exploring Open Source Programming Languages ▪ Integration with Db2 and ILE • After-Hours Lab: Containers & Setting up Development Environment • After-Hours Lab: Open Source Programming Languages 3 | Zend by Perforce © 2019 Perforce Software, Inc. zend.com IBM Systems Technical University © 3 4 | COMMON Webinar Series: Open Source on IBM i | November 2019 zend.com Setting up OSS Ecosystem on IBM i – ACS Version 4 | Zend by Perforce © 2019 Perforce Software, Inc. zend.com 5 | COMMON Webinar Series: Open Source on IBM i | November 2019 zend.com The directory structure Before installing the Open Source ecosystem / dev home lib sbin tmp usr var Directory Contents bin Commands dev Device Files etc Configuration files home User Home Directories lib Libraries pkgs Package files / commands sbin Privileged commands tmp Temporary files usr Utilities & Applications var Variable files
    [Show full text]
  • Server-Side Rendering of React Applications in Enterprise Portals
    Bachelor’s Thesis Czech Technical University in Prague Faculty of Electrical Engineering F3 Department of Computer Science Server-side rendering of React applications in enterprise portals Václav Jančařík Supervisor: Ing. Martin Ledvinka Field of study: Software Engineering and Technology May 2019 ii ZADÁNÍ BAKALÁŘSKÉ PRÁCE I. OSOBNÍ A STUDIJNÍ ÚDAJE Příjmení: Jančařík Jméno: Václav Osobní číslo: 466301 Fakulta/ústav: Fakulta elektrotechnická Zadávající katedra/ústav: Katedra počítačů Studijní program: Softwarové inženýrství a technologie II. ÚDAJE K BAKALÁŘSKÉ PRÁCI Název bakalářské práce: Vykreslování React aplikací na straně serveru v enterprise portálech Název bakalářské práce anglicky: Server-side rendering of React applications in enterprise portals Pokyny pro vypracování: 1. Analyze the current state of the art in the field of server-side rendering of React applications and running React applications in portal solutions. 2. Design fundamental principles of integration of server-side rendering of React applications in the context of portal environments. 3. Based on your design, implement a server-side rendering solution for React applications embedded in enterprise portals. 4. Demonstrate the correctness of your solution by comparing client- side and server-side rendering output of an example application. 5. Compare the performance of your server-side rendering solution with standard client-side rendering. Seznam doporučené literatury: [1] K. Konshin, Next.js Quick Start Guide: Server-side rendering done right, Packt Publishing, 2018 [2] R. Sezov, Liferay in Action: The Official Guide to Liferay Portal Development, Manning Publications, 2011 [3] R. Wieruch, The Road to learn React: Your journey to master plain yet pragmatic React.js, 2018 Jméno a pracoviště vedoucí(ho) bakalářské práce: Ing.
    [Show full text]
  • Adapt Authoring Tool: Installation
    Adapt Authoring Tool: Installation UGA Training Capstone Team April 21, 2019 1 Contents 1 Installing Prerequisites 3 1.1 Installing Git . 3 1.1.1 Debian Based Install . 3 1.1.2 RPM Based Install . 3 1.2 NodeJS . 4 1.2.1 Debian Based Install . 4 1.2.2 RPM Based Install . 4 1.3 Grunt . 5 1.3.1 Update NPM . 5 1.3.2 Install Grunt . 5 1.4 MongoDB Community Edition . 6 1.4.1 Debian Based Install . 6 1.4.2 RPM Based Install . 6 1.5 FFmpeg . 7 1.5.1 Debian Based Install . 7 1.5.2 RPM Based Install . 7 2 Installing The Authoring Tool 8 2.1 Clone Adapt Authoring . 8 2.2 Install required NPM packages . 8 2.3 Install Script . 9 2.4 PM2: Process Manager . 11 2.4.1 Installing PM2 . 11 2.4.2 Starting The Server . 11 2 1 Installing Prerequisites The authoring tool and framework require other software to operate. This section will provide the directions on what to install. Instructions have been provided for installation on a Debian or RPM based server. Other instruc- tions are provided at each software packages website. Administrative or Sudo access is required to complete the installation. 1.1 Installing Git Git is a tool for managing source code, and makes it easier to download and update the software. Git may already be installed on the server to which you are installing the authoring tool, to check from command line: $ git --version. 1.1.1 Debian Based Install From the command line: $ sudo apt install git-all 1.1.2 RPM Based Install From the command line: $ sudo dnf install git-all 3 1.2 NodeJS NodeJS is an open source, cross-platform JavaScript run-time enviroment that executes JavaScript code outside of a browser.
    [Show full text]
  • Portfolio ​ Appendix to the Full CV
    Portfolio Appendix to the full CV Tobias Cudnik Fullstack Web Developer [email protected] github.com/TobiaszCudnik linkedin.com/in/tobiaszcudnik Table of Contents 1. Node.js (TS / JS) 2. JavaScript (FE) 3. TypeScript (FE) 4. PHP 5. Golang 6. Python 7. Mobile 8. Automated testing 9. DevOps 10. Product design 11. Remote work 12. Showcase projects Latest version at https://bendedlogic.com/portfolio 1. Node.js (TS / JS) ● Closed Source ○ UBIO TypeScript, Koa, MongoDB, Microservices, Web Scraping, Google Travel API ○ Hola Express, MongoDB, p2p, LXC, CVS, ES3->ES6, custom tools, ESLint plugins ○ BetVictor Express, MongoDB, SQL, Microservices ● Commercial Open Source ○ https://github.com/RiseVision/rise-node (commits) TypeScript, Blockchain, CLI, P2P, Docker, Protocol Buffers, nginx, Distributed System ● Open Source ○ https://github.com/TobiaszCudnik/taskbot TypeScript, Next.js, Hapi.js, Google Tasks API, GMail API, Google Sign-In, Firebase, AsyncMachine ○ https://github.com/TobiaszCudnik/asyncmachine-inspector TypeScript, Workers, RPC, JSONDiffPatch, Redis, Socket.io ○ https://github.com/TobiaszCudnik/wsti-thesis-2012 P2P, RPC, Distributed System, Graph Theory 2. JavaScript (FE) ● Closed Source ○ Hola Angular, MongoDB, ES6, CVS ○ William Hill React, Redux, Redux Sagas, Flowtype, REST, Git ○ CloudFarm5 Backbone, Chaplin, REST, data visualization (Canvas), CoffeeScript, ES5, jQuery, Git ○ Google Closure Compiler, Closure Library, Protocol Buffers, JSDoc, Vanilla JS, ES3, Perforce, Git ○ UBS UI optimization, refactoring, Backbone, Mustache,
    [Show full text]
  • Complete Node.Js Secrets & Tips for Professionals
    Node.js CompleteComplete Tips & Secrets for Professionals Node.js Tips & Secrets for Professionals 200+ pages of professional hints and tricks Disclaimer This is an unocial free book created for educational purposes and is GoalKicker.com not aliated with ocial Node.js group(s) or company(s). Free Programming Books All trademarks and registered trademarks are the property of their respective owners Contents About ................................................................................................................................................................................... 1 Chapter 1: Getting started with Node.js ............................................................................................................ 2 Section 1.1: Hello World HTTP server ........................................................................................................................... 3 Section 1.2: Hello World command line ....................................................................................................................... 4 Section 1.3: Hello World with Express .......................................................................................................................... 5 Section 1.4: Installing and Running Node.js ................................................................................................................. 6 Section 1.5: Debugging Your NodeJS Application ...................................................................................................... 6 Section 1.6:
    [Show full text]
  • Pavel Polyakov's Blog
    Pavel Polyakov Germany, Hamburg, 22087 ​ ​ ​ ​ ​ ​ Immenhof 11 ​ ​ +4915258163147 [email protected] skype: pavel.polyakov.x1 ​ ​ Personal blog: http://pavelpolyakov.com ​ ​ ​ ​​ Linkedin: https://www.linkedin.com/in/pavel-polyakov ​ ​​ ​ Github: https://github.com/PavelPolyakov ​ ​​ ​ ​ Education Kharkiv State Economics University ​ ​ ​ ​ ​ ​ Master’s degree, Computer Science ​ ​ ​ ​ ​ ​ 2004 – 2009 ​ ​ ​ ​ Grade: A ​ ​ Work Experience ​ ​ Kreditech, April 2015 - present ​ ​ ​ ​ ​ ​ ​ ​ ● Expert Software Engineer, developing using Node.js, mainly Hapi.js framework, Angular 1 as ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ front-end. React as of 2017. Responsible as for the architecture (partly) as for bringing the ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ project live. * Appendix A ​ ​ ​ ​​ ​ ​ ​ ​ X1 Group, August 2012 – April 2015 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ● Senior PHP developer, developing Zend Framework 1/Laravel 4 based applications from the ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ scratch, developing the project architecture, integrating various API. * Appendix A ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​​ ​ ​ ​ ​ Total Internet Group, August 2009 – August 2012 ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ● Senior PHP developer / Office leader, developing Zend Framework based projects and Magento ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ based web shops. Leading small teams in the way to make the projects successful. Also I was ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ responsible for the office functioning in general.
    [Show full text]
  • Jiskefet, a Bookkeeping Application for ALICE
    EPJ Web of Conferences 245, 04023 (2020) https://doi.org/10.1051/epjconf/202024504023 CHEP 2019 Jiskefet, a bookkeeping application for ALICE 1,* 2 1 Marten Teitsma , Vasco Chibante Barosso , Pascal Boeschoten , and Patrick Hendriks1 1Amsterdam University of Applied Sciences 2CERN Abstract. A new bookkeeping system called Jiskefet is being developed for A Large Ion Collider Experiment (ALICE) during Long Shutdown 2, to be in production until the end of LHC Run 4 (2029). Jiskefet unifies two function- alities: a) gathering, storing and presenting metadata associated with the oper- ations of the ALICE experiment and b) tracking the asynchronous processing of the physics data. It will replace the existing ALICE Electronic Logbook and AliMonitor, allowing for a technology refresh and the inclusion of new fea- tures based on the experience collected during Run 1 and Run 2. The front end leverages web technologies much in use nowadays such as TypeScript and NodeJS and is adaptive to various clients such as tablets, mobile devices and other screens. The back end includes an OpenAPI specification based REST API and a relational database. This paper will describe the organization of the work done by various student teams who work on Jiskefet in sequential and parallel semesters and how continuity is guaranteed by using guidelines on cod- ing, documentation and development. It will also describe the current status of the development, the initial experience in detector stand-alone commissioning setups and the future plans. 1 Introduction During the LHC Long Shutdown 2 a renewal of the bookkeeping systems in place for AL- ICE is envisioned.
    [Show full text]
  • 경력사항 국방통합데이터센터 1센터 - 만기제대 2014-08-11 ~ 2016-05-10 - 군대Sw 관리병 / 체계관제병 - 서버 모니터링 및 유지보수 스크립트 실행하여 서버 재실행 등
    함께하면 서로 성장하는 개발자 정석호입니다. 정석호 httpsvuugithubtcomuCreatiCoding / nodejsdeveloper@kakaotcom 자기소개 안녕하세요r 저는 Viva Republica에서 Client Platform에서 일하고 있는 Frontend DeveloperpDevopsq 입니다t frontsend 개발자도 DevOps를 조금만 알면 backsend 개발자 못지않게 유용하게 활용할 수 있음을 널리 알리고 싶습니다t #DivOps는 재밌어요 ✨ 저는 아래를 추구하고l고민합니다t - 최소한의 리소스로 정직하고 최대한의 효과 - 성능 좋은 코드 < 읽기 좋은 코드 - 주석 달린 코드 < 직관적인 코드 - 개발자 모두의e상향 평준화 저는 이것을 좋아합니다t - frontsend를 위한eDevOpsp자동배포 및 유닛테스트q - 성능 최적화p첫 로딩 속도r 번들링 분석q - 트러블 슈팅p레이아웃 쉬프트r 플리커l현상) 경력사항 국방통합데이터센터 1센터 - 만기제대 2014-08-11 ~ 2016-05-10 - 군대pSW 관리병q / 체계관제병 - 서버 모니터링 및 유지보수r 스크립트 실행하여 서버 재실행 등 웍스모바일 - 인턴 8주 2018-07-02 ~ 2018-08-24 - 채용전제형 인턴 / 인턴 과제 진행 - Elasticsearch를 활용한 검색엔진 개선 pElasticsearchr Logstashr c언어q 펫프렌즈 - 퇴사 2018-12-17 ~ 2021-05-21 - 정규직 / Frontend Developer - 신규 서비스 UI 담당 및 기존 서비스 유지보수 비바리퍼블리카 - 재직 중 2021-05-31 ~ - 정규직 / Frontend Developer pdevopsq - 프론트엔드 개발 환경 개선 및 CIuCD 안정화 경력 기술서 feature 긴급점검 기능 2021-03 ~ 2021-03 - Nodetjs Koa의 middleware 기능으로 redirect response 추가 - axios의 interceptor에서 301을 찾아 response의 redirect URL 로 변경 - Backend의 response의 데이터 중 URL에 query string 추가하여 점검 시간을 동적 데이터로 표 기 - 기존 방식v 이미지 교체 + 정적 소스 배포 - => 디자이너 + 프론트엔드 개발자의 리소스를 절약 edu 사내 교육 frontsend 신입 개발자 Vuetjs 세미나 2021-03 ~ - frontsend 신입 개발자를 위한 사내 개발팀 세미나를 진행 중 - 공통 코드 스타일 정립 및 공유 - httpsvuugithubtcomuCreatiCodinguseminarsvuejs project 신 파트너사 사이트 개발 pReact Nexttjs 무중단 배포q new 2020-08 ~ 2020-11 - 파트너사를 위한 웹 사이트를 React Nexttjs 기반의 SSR로 진행 - 2대의 서버에 각 서버에서 pm2 를 활용하여 무중단 배포 - 상용환경은 서버 2대에 로드밸런싱을 적용했으며r 그로 인해 발생했던 사이드이펙트도 해결 feature 배너 움짤 2020-06 ~ 2020-07 - 기존
    [Show full text]
  • Brenda Zhang
    [email protected] Brenda Zhang 415-312-3215 Cog Sci Major & Comp Sci Minor linkedin.com/in/brendacs University of California, Berkeley github.com/brendacs 08/2015 - 05/2019 (anticipated) brendacs.github.io/desktop WORK EXPERIENCE TECHNICAL SKILLS Software Engineering Intern Languages & Databases HTML5, CSS3, JavaScript, Python, Java, SQL, SOQL, The Climate Corporation Apex, PostgreSQL, MongoDB, Salesforce 05/2018 - 08/2018 San Francisco, CA Frameworks & Libraries • Developed React Native app, for internal staff to scan QR React, React Native, Angular, Redux, Node.js, Ex- codes, which queries/updates Salesforce records using SQL press, Rails, Django, jQuery, Next.js • Modernized events page by creating search, sort, and edit Miscellaneous Tools, Managers & Preprocessors Java functions and added form with Java/SQL backend SASS, LESS, Grunt, Gulp, webpack, npm, Yarn, pip, • Enhanced testing automation with addition of over 100 front Postman, Git, GitHub, PM2, DigitalOcean, Heroku and back -end unit tests written in Java, Jest, and Enzyme • Added reusable React feature components, such as toast no- Testing Frameworks & Tools tifications, tooltips, and components for internationalization Jest, Enzyme, TestCafe, unittest, JUnit Full Stack Engineer PERSONAL PROJECTS Stowk, Inc. 06/2017 - Present 03/2017 - 05/2018 Berkeley, CA Discord Stop Bot • A message moderation bot for Discord that automatically stops • Built and maintained the front end of the web and cross-plat- spam, profanity, and other unwanted messages, especially in large servers. It was developed with Node.js, Express, Post- form mobile apps using React, React Native, and Redux greSQL, and Discord.js. Managed with PM2 on VPS. It is active • Developed shipment progress dashboard, facial recognition in over 2,400 Discord servers with over 95,000 users.
    [Show full text]
  • Health Risks of Particulate Matter from Long-Range Transboundary Pollution
    Particulate matter is a type of air pollution that The WHO Regional Office transboundary airpollution long-range from Health risksofparticulate matter for Europe is generated by a variety of human activities, transboundary airpollution long-range Health risksofparticulate from matter can travel long distances in the atmosphere and The World Health Organization (WHO) is a specialized agency of the United causes a wide range of diseases and a significant Nations created in 1948 with the primary reduction of life expectancy in most of the responsibility for international health matters and public health. The WHO population of Europe. Regional Office for Europe is one of six regional offices throughout the world, each with its own programme geared to This report summarizes the evidence on these the particular health conditions of the countries it serves. effects, as well as knowledge about the sources of particulate matter, its transport in the Member States atmosphere, measured and modelled levels Albania Andorra of pollution in ambient air, and population Armenia Austria exposure. It shows that long-range transport of Azerbaijan particulate matter contributes significantly to Belarus Belgium exposure and to health effects. Bosnia and Herzegovina Bulgaria Croatia The authors conclude that international action Cyprus Czech Republic must accompany local and national efforts to cut Denmark pollution emissions and reduce their effects on Estonia Finland human health. France Georgia Germany Greece Hungary Iceland Ireland Israel Italy Kazakhstan Kyrgyzstan Latvia Lithuania Luxembourg Malta Monaco Netherlands Norway Poland Portugal Republic of Moldova Romania Russian Federation San Marino Serbia and Montenegro Slovakia Slovenia Spain Sweden World Health Organization Switzerland Regional Office for Europe Tajikistan The former Yugoslav Republic of Macedonia Scherfigsvej 8, DK-2100 Copenhagen Ø, Denmark Turkey Tel.: +45 39 17 17 17.
    [Show full text]
  • Node Js Net Server Example
    Node Js Net Server Example Heard Germaine sometimes underpin any dominees sphere somewhile. Teddie eluting pyramidically? Rubric Hamnet implicated lightly or air-mail metabolically when Regan is microcosmical. Configure the node js to few events to each object we only a call the server with express as it both the waiting for this is. The examples with node js tcp server wants to get started working on the server! This TCP Server is consumed using a console application written in C What is Nodejs Nodejs operates on a single work and leverages the. Also implement sockets. For sound if your DNS Lookup takes longer time general you. So much more than twice in echo data from received should i want to analyze traffic and examples. Jonathan Wexler walks through the steps for installing Nodejs and shows how to build a Nodejs module and jump right shirt to initializing a web server. In server terminal ensuring the examples with the socket is good to print current request in your node js server should be sent to. WebSocket communication takes place left a single TCP socket using. The appropriate http is necessary variables from tcp application, meaning of the client communication net module. HTTP Nodejs v1050 Documentation. For node js files. A Client Example to attract to the Node js TCP Server const net require'net' const client new smooth Socket const port 3000 const host 'yourserverip'. Enter the key. Passenger standalone and examples. Opens a server? NET web applications and Apache is a web server for PHP or Java web. Using WebSockets on Heroku with Nodejs Heroku Dev Center.
    [Show full text]