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. 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. I have two separate vagrant boxes, one for local and one for live (using Digital Ocean's vagrant plug-in). This structure has three git repo's. Post by Ewan Valentine Programmer for The LAD Bible and The SPORT Bible. 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. 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. Background: we’re holded up in the Austrian mountains working on the new Buddycloud hosting platform.

We need to be able to reliably test and deploy code. Also, we want to be testing on exactly the same environment that we are running in production. What services should be run under docker and what are “core” services that other apps use? We separate core services like databases, DNS and LDAP (for server authentication) from services that are updated and managed by Docker. This has the knock on effect that when we do deployments to services that use a database: the deployed service or the application MUST take care of ensuring that the database is at the correct schema version. # Back.

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 And all this is done on one Vagrant machine.

So thank you "Mitchell Hashimoto" and "John Bender" for this awesome tool! We hope this blogpost (and the next ones in this series) will inspire you to do great things with it. Preparing yourself for takeoff Standard requirements Vagrant as described on the website is a tool for building and distributing virtualized development environments. Installing rvm (optional) Setting up rvm. Test driven development checklist. Git Cheatsheet. The Pomodoro Technique®

What is 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. What makes it so unique? 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: Kill multitasking urges in the office.Get reports finished on time.Bill clients by Pomodoro units (just kidding!).

Structure classroom time.Give students a mental break between lesson plans.Correct papers. Semantic Versioning 2.0.0. A successful Git branching model » nvie.com. Note of reflection (March 5, 2020)This model was conceived in 2010, now more than 10 years ago, and not very long after Git itself came into being. In those 10 years, git-flow (the branching model laid out in this article) has become hugely popular in many a software team to the point where people have started treating it like a standard of sorts — but unfortunately also as a dogma or panacea.During those 10 years, Git itself has taken the world by a storm, and the most popular type of software that is being developed with Git is shifting more towards web apps — at least in my filter bubble. Web apps are typically continuously delivered, not rolled back, and you don't have to support multiple versions of the software running in the wild.This is not the class of software that I had in mind when I wrote the blog post 10 years ago.

Why git? ¶ For a thorough discussion on the pros and cons of Git compared to centralized source code control systems, see the web. The main branches ¶ develop.

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. 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 Apache Ant runs a batch of tasks otherwise done one-by-one.

Continuous Integration with Jenkins, Part 2. In the first part of this article I presented the case for Continuous Integration. 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: To start a PHPUnit test: And this line adds User.php to the Git repository: