Recently I came across an interesting article – “How we migrated Dropbox from Nginx to Envoy”. There are a few reasons for such complex and unobvious transformation:
Nginx served us well for almost a decade. But it didn’t adapt to our current development best-practices:
– Our internal and (private) external APIs are gradually migrating from REST to gRPC which requires all sorts of transcoding features from proxies.
– Protocol buffers became de facto standard for service definitions and configurations.
– All software, regardless of the language, is built and tested with Bazel.
– Heavy involvement of our engineers on essential infrastructure projects in the open source community.
If you want to get more details and discuss this topic with its author Oleg Guba do not miss the biggest Russian conference Highload 2020, November 9-10, 2020 in Scolkovo.
I remember the time when I was a part of the team to provide our web-based applications as service (SaaS). We had ideas, of course, based on our previous experience in the web development area. But it was really difficult to start.
This time the situation is changed. Many web apps are SaaS-based now. And you can find not just short posts about SaaS but the articles for long reading. One of these is The SaaS Handbook – How to Build Your First Software-as-a-Service Product Step-By-Step.
The article describes a tech stack (it’s JS – Node.js + Preact – an alternative version of the React), structure, design, integrations with third-party services, and deploy and gives tips and ideas to build your version of the SaaS..
Legacy projects can be a pain – you have to not just support an old code but add new features. And at some point this may become a nightmare. However, there are many ways to upgrade it without full re-development at one time. One possible solution is to move such projects to the modern Laravel ecosystem as it’s described in this article.
The idea behind of it is to wrap the old code to handle it by Laravel. Once it’ll be done, the old functionality will work as expected, while all new features will be added in Laravel. Additionally the old code can be refactored and moved under Laravel without a downtime or an interruption of the project. This solution will give a smooth transition from old system to the new one.
Also do not forget about tests – unit and integration, static analyzers like PHPStand and code style control with PHPCS. This will help you to catch possible bugs even before run your app.
The universal chatbot library based on React allows to create chatbots for Telegram, Slack and Facebook right now. Support of Whatsapp, Viber and VKontakte will be added soon.
Many of us have pet projects we never finish. This article shows how to complete your project in 14 hours from idea to live product! Sure, your project can be more complicated and may take more time. In any case this article will be helpful in terms of services used by author as well as inspiration to bring your idea live.
Slack became a standard de-facto to communicate teams in IT area for sure. It has a lot of useful features as well as smart business decisions such HipHat acquisition.
Here is a nice article with seven points which help you to be more productive using Slack. My favorite tips are reminders and giphy. Plus ability to keep track of important messages.
Reminders are really excite. For example, to set reminder to notify you today at 12pm to come to the office just send this command to the slack bot:
/remind me to come to office today at 12pm
And Slack bot will send you notification today at 12pm. It’s also possible to set reminder for your colleague or channel as well as one time reminders or recurring ones.
By default Monolog ignores line breaks inside debug message and puts it in one line. That’s fine for GrayLog or something similar but is not handy for me during local development. The fix is easy. Just add new Formatter with allowInlineLineBreaks option in true to your StreamHandler and enjoy formatted dumping of arrays:
$logger = new Monolog\Logger('MyLoggerName');
$formatter = new Monolog\Formatter\LineFormatter(
null, // Format of message in log, default [%datetime%] %channel%.%level_name%: %message% %context% %extra%\n
null, // Datetime format
true, // allowInlineLineBreaks option, default false
true // ignoreEmptyContextAndExtra option, default false
$debugHandler = new Monolog\Handler\StreamHandler('/tmp/my_debug.log', Monolog\Logger::DEBUG);
If you use Chrome version 62 under Fedora 26 and realize the blue color becomes purple on your external monitor (laptop screen is fine) then welcome to the club! My first guessing was cable – changed it with the same result, then tried different monitors with different connection methods – VGA, HDMI, USB. No luck. Then I spent some time to check my video card, google similar problem. But suddenly I put Firefox to the same external monitor and found blue color as a blue!
So, card is fine, monitor and cable are fine too. The problem with some weird settings of Chrome. Using this Reddit thread I found solution:
- Open new tab and type there chrome://flags
- Find option “Force color profile” and set it to “sRGB”
- Restart Chrome and enjoy blue as blue 🙂