Programming
-
-
-
-
-
-
-
Семь смертных грехов разработки ПО – анти-паттерны, неотслеживаемые изменения, сложные релизы, добровольный статический анализ, неизвестное покрытие тестами, бесконечная разработка, недокументированные интерфейсы
-
-
-
-
-
-
Languages
C++
Scala
Algorithms
Сложность алгоритмов
Сортировка
Строки
Android
-
-
Cordova – develop mobile apps with
HTML,
CSS &
JS
API
Characteristics of good API:
The design process
Правило №1: больше интерфейсов. В пределе в вашей публичной документации не должно быть ни одной сигнатуры, принимающей конкретные типы, а не интерфейсы.
Правило №2: иерархия. Ваши объекты должны быть выстроены в иерархию: кто с кем взаимодействует.
Правило №3: контексты. Рассматривайте любую промежуточную ступень иерархии как информационный контекст для нижележащей ступени.
Правило №4: consistency. Любой объект должен предоставлять полное описание своего состояния в любой момент и полный набор событий, позволяющий отслеживать все изменения своего состояния.
Правило №5: события. Организуйте взаимодействие между объектами с помощью событий, причём в обе стороны.
Правило №6: делегирование. Поскольку чаще всего изменяется реализация и функциональность именно нижнего уровня абстракции (верстка, протоколы взаимодействия, etc), интерфейс к нижнему уровню абстракции должен быть максимально общим.
Правило №7: тесты. Пишите тесты на интерфейс и запускайте их поверх предыдущей версии
API.
Правило №8: внешние источники. Если вы не контролируете внешний источник данных – заведите к нему версионируемую обёртку на своей стороне.
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 |
|
|
|
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)
Planning Game
Small Interactions
System Metaphor
Simple Design
Unit Testing
Refactoring
Pair Programming
Collective Code Ownership
Continuous Integration
40-hour Week
On-site Customer
Coding Standard
Web
WebServices
MVC frameworks
-
-
-
-
-
Lift – Web Framework for Scala
-
-
-
-
-
Stripes – a presentation framework for building web applications. Similar to Tapestry, Spring-MVC and Struts.
Play framework focuses on developer productivity and targets RESTful architectures
CSS
Flexbox
Math
Ряды
DNS
-
-
gandi – most verbose search for domain availability
-
Trademark / registered name search
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:
-
Interesting subdomains:
mooo.com,
etherbyte.com,
shadir.com,
icfar.com,
patf.com,
robinhud.com,
feared.eu,
dynamai.com,
silksky.com,
nfors.com,
pegle.com,
diipl.com, gurdit.com, ndcg.com, higgr.com, mocis.com, patov.com, tintira.com, alexfb.com, lolk.org, mtn.cc, jake.eu
-
-
Support MX records for paid accounts:
Does not seem to support MX records:
yDNS – currently only A and AAAA records are supported
-