Programming

Languages

C++

Scala

Algorithms

Сложность алгоритмов

Сортировка

Строки

Android

UTF

API

The Little Manual of API Design

Characteristics of good API:

  • Easy to learn and memorize
  • Leads to readable code
  • Hard to misuse
  • Easy to extend
  • Complete

The design process

  • Know the requirements. Define the API before you implement it.
  • Write use cases before you write any other code. Write several examples against the API.
  • Prepare for extensions.
  • Have your peers review your public API. Don't publish internal APIs without review.
  • When in doubt, leave it out.

Как правильно разрабатывать API с поддержкой обратной совместимости. Семинар в Яндексе

  • Правило №1: больше интерфейсов. В пределе в вашей публичной документации не должно быть ни одной сигнатуры, принимающей конкретные типы, а не интерфейсы.
  • Правило №2: иерархия. Ваши объекты должны быть выстроены в иерархию: кто с кем взаимодействует.
  • Правило №3: контексты. Рассматривайте любую промежуточную ступень иерархии как информационный контекст для нижележащей ступени.
  • Правило №4: consistency. Любой объект должен предоставлять полное описание своего состояния в любой момент и полный набор событий, позволяющий отслеживать все изменения своего состояния.
  • Правило №5: события. Организуйте взаимодействие между объектами с помощью событий, причём в обе стороны.
  • Правило №6: делегирование. Поскольку чаще всего изменяется реализация и функциональность именно нижнего уровня абстракции (верстка, протоколы взаимодействия, etc), интерфейс к нижнему уровню абстракции должен быть максимально общим.
  • Правило №7: тесты. Пишите тесты на интерфейс и запускайте их поверх предыдущей версии API.
  • Правило №8: внешние источники. Если вы не контролируете внешний источник данных – заведите к нему версионируемую обёртку на своей стороне.

Design patterns

Design Pattern Encapsulation Hierarchy*

Design pattern encapsulation hierarchy

Solution Language Interpreter
Public Interface Adapter Bridge Façade Interface Mediator
Behavior Class Decorator State
Algorithm Strategy
Algorithm Elements Template
Executable Sequences Method
Receiver Selector Arguments Invocation
  • Collection
  • Composite
  • Chain of Responsibility
  • Iterator
  • Proxy
  • Object
  • Flyweight
Visitor  
  • Command
  • Observer
Closure

* Static, Named Variable & Computed can also be applied at any level.

GoF designated Proxy to this pattern where access to the target object or its behavior is limited and Decorator where it's augmented.

Development methodologies

XP principles1)

  1. Planning Game
  2. Small Interactions
  3. System Metaphor
  4. Simple Design
  5. Unit Testing
  6. Refactoring
  7. Pair Programming
  8. Collective Code Ownership
  9. Continuous Integration
  10. 40-hour Week
  11. On-site Customer
  12. Coding Standard

Web

WebServices

CXF

MVC frameworks

CSS

Flexbox

Math

Ряды

DNS

Port forwarding and DynDNS

If you which to benefit from DynDNS, you have to register.

Alternative dynamic DNS providers

Collection of dynamic DNS providers:

Support MX records:

Support MX records for paid accounts:

Does not seem to support MX records:

1) From “Extreme Programming Applied: Playing To Win” by Ken Auer and Roy Miller. Other books can be found here.
programming/start.txt · Last modified: 2015/04/02 18:43 by dmitry
 
 
Recent changes RSS feed Driven by DokuWiki