e0ne's comments

Text Editor or IDE?

Published at February 22, 2019 ·  3 min read

A short Friday’s holy war about IDEs, text editors and vim:). I don’t really like bikeshedding about text editors, but I was asked about my favorite one too much to not drop a note here. I spent most of the time in editors with Python code, a bit less with JavaScript/TypeScript. Of course, a lot of json and yaml, sometimes bash scripts and Ansible playbooks are opened by me too. I strongly believe that for each task there is the best tool somewhere....

Right Way to Setup Jenkins in Docker

Published at February 21, 2019 ·  1 min read

I was for this solution for months. Almost any guide I’ve found was about using an official Docker image with few plugins installed. It works pretty well if you agree with a manual initial configuration like configure admin user and password. It doesn’t work at all if you deploy Jenkins in an automated way. Here is a Dockerfile to get installed and ready to use Jenkins: FROM jenkins/jenkins:lts # https://github.com/jenkinsci/docker/blob/master/README.md # Jenkins configuration ENV JAVA_OPTS="-Djenkins....

Python Releases

Published at February 21, 2019 ·  1 min read

Since I switched to Python 3.5 as my default and I need to keep backward compatibility with Python 2.7 one year more, I don’t follow new features and releases a lot. Originally, Python 3.5 was released about 3.5 years ago. Looking throw release notes, I think I’ll switch to Python 3.6 just for the projects where I don’t need to support 2.7. There are not a lot of features in newer releases but some of them seem to be useful for me....

Embedded React App on Your Site

Published at February 19, 2019 ·  2 min read

It’s great if you’re able to start development from scratch and you can implement SPA using the latest technologies. But sometimes you can only extend existing functionality. In such a case, it makes sense to embed your React app into the existing web site. The idea is pretty simple: you need to add your react-based application to the existing page. The easiest way is to add some <div id="reactApp"></div> to your page and add the script with a production build of your react application....

Fixing tests: boring, but useful job

Published at February 18, 2019 ·  1 min read

Fighting with tests during the last two days, I would like to drop a short note of why I usually do this job. First of all, it’s a great chance to understand how the project works. Even if test coverage is not good enough, usually you can learn a lot about project architecture. The next reason is that almost every project team doesn’t have enough time to improve or extend the current tests....

Deploy Hugo Sites With Jenkins

Published at February 17, 2019 ·  2 min read

I’ll describe how I do my Hugo-based blog updates with Jenkins, but it’s pretty similar to any other static site generator. Pre-requirements Jenkins installation is out of the scope of this post. Also, you need to have installed and configured Publish Over SSH plugin. Also, I use Jenkins Job Builder (JJB) to configure Jenkins jobs from yaml file. I’ll describe my blog-jobs.yaml config for my blog below. Jenkins configuration Views If you have a lot of jobs or just want to group them by project, it makes sense to create a view:...

Click - Implement CLI Without Pain

Published at February 16, 2019 ·  1 min read

I didn’t write reviews for libraries for a while. Honestly, I don’t want to write a review for click because a reading of it will require more time than you try it. It’s an awesome library which is really easy to use. E.g.: @click.command() @click.option('--command', prompt='command name: clone or update', help='Clone or update repos') def main(command): if command == 'clone': clone() elif command == 'update': update() I didn’t find anything like this for Python....

Choosing CI server for local needs

Published at February 15, 2019 ·  2 min read

Implementing everything-as-a-code initiative, I need some CI server up and running on my desktop. I don’t want to use cron directly or implement something myself because of I don’t have enough time for it. That’s mean, I can’t use Drone, Circle CI, or Travis CI because of pricing. I tried Buildbot and GoCD and they look pretty good but not mature enough. I really like GitLab CI but it requires a lot of resources and looks like too powerful for my simple tasks....

Code Coverage and Cyclomatic Complexity

Published at February 14, 2019 ·  1 min read

Code coverage for unit tests and cyclomatic complexity could be extremely useful metrics for your code. They help you to understand if something is not tested at all by unit tests. A combination of these metrics allows you to understand how many unit tests you should implement and what is your code complexity. I’m pretty sure, that everybody agrees that more coverage and less complexity is that you should aim for....

OpenStack Cinder Performance Testing Approach Part 1 of 2

Published at February 13, 2019 ·  8 min read

NOTE: This post was initially written a few years ago, so something could be outdated. What is Cinder High-level Cinder Architecture Cinder contains 3 main components: Cinder API (c-api), Cinder Scheduler (c-sched) and Cinder Volume (c-vol). Cinder Backup is a bit different and will be described later. All Cinder components communicate between each other using RPC protocol. In our case, it’s an AMPQ protocol with RabbitMQ backend. All data is stored in the database (MySQL DB)....

Tags

.net .net-framework .net-framework-3.5 agile ajax ajax-control-toolkit ampq ansible apache asp.net asp.net-mvc automation axum babel bash benchmark blog blog-engine bootstrap buildout c# cache centos chrome ci cinder ckan cli cloud code-review codeplex community config debugger deface dependencies development-environment devices devstack devtime disks django dlr dns docker dockerimage dos easy_install elmah encoding environment-variables error event events everything-as-a-code exception exceptions fabrik firefox flask foreach forms fstab gae gcc gerrit git github go google google-app-engine grep hack hacked hardware headless horizon hound html hugo iaas ienumerable iis internet iptables iron-python ironic iscsi java-script javascript jenkins jquery js jsx kharkivpy kiss kombu kvm kyiv lettuce libvirt linux lio loci logging loopback losetup lvm mac-os macos mercurial microsoft microsoft-sync-framework mobile mono ms-office msbuild networking news nginx npm npx offtopic oop open-source open-xml opensource openstack openvswitch os packages paraller-development patterns-practices performance php pika pip plugins pnp podcast popup postgresql profiler project protocols proxy pycamp pycharm pycon pykyiv pylint pypi python python-3 qcow quantum qumy rabbitmq rar react reactjs refactoring rfc rhel search-engine security selenium server shell silverlight socket software-engineering source-control sourcegear-vault sources sql sql-server sql-server-express sqlalchemy ssh static-site sublimetext svg tests tgt tipfy tornado typescript uapycon ui uneta unit-tests upgrades usability vim virtualenv visual-studio vitrage vm vue.js vuejs web-development web-server web-service web_root webpack webroot windows windows-live word-press x32 x64 xcode xml xss xvfb интернет-магазин книги


Archives

2019 (73)
2018 (2)
2017 (3)
2016 (2)
2015 (3)
2014 (5)
2013 (17)
2012 (22)
2011 (35)
2010 (25)
2009 (35)
2008 (32)
2007 (2)