background preloader

Development

Facebook Twitter

Философия программирования — трёхнаправленное программирование. Программирование рассматривается как процесс создания компьютерных программ.

Философия программирования — трёхнаправленное программирование

Слово процесс в этом определении не лишнее. Обычно рассуждают в духе «посмотрите, какую замечательную структуру данных можно описать на данном языке программирования». Философия программирования подразумевает оглянуться по сторонам, да и в глубь копнуть. Собственно разделение на кодирование, и создание алгоритмов это уже специфика, сначала идёт жизнь, то есть человек опирается на некую мысль вроде «напишу-ка я фреймворк с такими-то свойствами».

И вот это начальное направление это вопрос философии. Eight Docker Development Patterns. Story Mapper by Carbon Five. How I organise a large project. Update: Since posting this on Hacker News I had 300 concurrent users for a few hours and remained on the front-page, top 10 for a couple of hours also.

How I organise a large project

That's the first time I've made front-page Hacker News! I'm so proud. Thanks folks! It's taken me a long time to define and work out a way to structure my projects so that I can deploy easily, use vagrant effectively, and keep everything clear. I use Digital Ocean for my production hosting, but you can do the same using AWS etc, also.

/api/local /puphpet/* /Vagrantfile /src /production /puphpet/* /Vagrantfile /src (symlink to /api/local/src/) /app/* /README.md /.gitignore This project contains a mobile application and a central API. I symlink the production src folder to the local src folder so that they're always the same files. Blog - Using Docker with Github and Jenkins for repeatable deployments. Using Docker with Github and Jenkins for repeatable deployments Docker helps us deploy to Buddycloud’s testing and production environments.

Blog - Using Docker with Github and Jenkins for repeatable deployments

We use Docker to run Buddycloud’s hosted environment. And deploy after every commit to our testing and production Git branches. Again and again. Automatically. Zero to Jenkins - PHP Continuous Integration. Using Vagrant as a Team. This blogpost goes into detail how we leverage Vagrant in our day to day work. We use it with a team of 7 people to integrate a pretty complex application. To get an idea on the complexity: We have a nodejs server talking to a redis databasea grails application that reads from the redis database and writes to a mysql dba rails frontend that reads from the grails rest services and writes to a mysql dba perl application importing data into the mysql db from an external sourcethe nodejs logs via flume to a hadoop storagewe extract data via sqoop from the hadoop storage.

Test driven development checklist. Git Cheatsheet. The Pomodoro Technique® What is The Pomodoro Technique?

The Pomodoro Technique®

EASY for anyone to use! Improves productivity IMMEDIATELY! FUN to do! Why Pomodoro? The Pomodoro Technique isn’t like any other time-management method on the market today. For many people, time is an enemy. Essential to the Pomodoro Technique is the notion that taking short, scheduled breaks while working eliminates the “running on fumes” feeling you get when you’ve pushed yourself too hard. Whether it’s a call, a Facebook message, or suddenly realizing you need to change the oil in your car, many distracting thoughts and events come up when you’re at work. Most of us are intimately acquainted with the guilt that comes from procrastinating.

Who does the technique work for? These are all ways real folks use the Pomodoro Technique: Motivate yourself to write.Limit distractions.Keep track of how long you’re spending brainstorming / writing / revising.Reduce back and neck pain by walking around during Pomodoro breaks.Draft a book in three weeks. How It works. Semantic Versioning 2.0.0.

A successful Git branching model » nvie.com. In this post I present the development model that I’ve introduced for some of my projects (both at work and private) about a year ago, and which has turned out to be very successful.

A successful Git branching model » nvie.com

I’ve been meaning to write about it for a while now, but I’ve never really found the time to do so thoroughly, until now. I won’t talk about any of the projects’ details, merely about the branching strategy and release management. It focuses around Git as the tool for the versioning of all of our source code. (By the way, if you’re interested in Git, our company GitPrime provides some awesome realtime data analytics on software engineering performance.) Why git? For a thorough discussion on the pros and cons of Git compared to centralized source code control systems, see the web.

But with Git, these actions are extremely cheap and simple, and they are considered one of the core parts of your daily workflow, really. Enough about the tools, let’s head onto the development model.

Diagrams

Continuous Integration with Jenkins, Part 1. Continuous integration is a software quality control technique that checks code integrity whenever small changes are made rather than waiting for all of the code to be finished before testing and debugging it.

Continuous Integration with Jenkins, Part 1

CI asks for version control and for automated unit testing and constant package building. In principle, the automated part of the cycle can be done with cron jobs that trigger programs like xunit (tester) and make (builder). However, more convenient and resourceful tools have emerged in the last few years, like Jenkins, which is combines automation and supervisory tasks into one single system. What Jenkins does is not difficult to understand once you know why it does that. By the way, I do not have to be concerned with making the reader an expert in Jenkins because it is so easy to use that once its basic purpose is understood the sophisticate resources follow naturally. The Big Picture Version Control Unit Testing Building.

Continuous Integration with Jenkins, Part 2. In the first part of this article I presented the case for Continuous Integration.

Continuous Integration with Jenkins, Part 2

Now we’ll install and set Jenkins up to monitor the automatic building of a simple demonstration PHP application. We’ll begin with the demo project, then address Jenkins’ installation, and finally set it up and watch it running. Demonstration Project The demo project is based on the User class and its test script used by Michelle Sanver in her article Getting Started with PHPUnit. To keep things organized, I created a directory called workspace in my home directory and set it up like this: workspace has two subdirectories: .git which is automatically created and used by Git, and builds, the stable version folder. The development file is User.php under workspace whereas the stable file has the same name but is in workspace/builds. The following lines create directories workspace and workspace/builds and initializes the Git repository: