Сообщения

Сообщения за август, 2017

Duck Hierarchy

Изображение
В этой статье больше шутки нежели полезной информацией. Под влиянием книги  Head First Design Patterns  я когда-то давно нарисовал такую картинку. Слева мы видим типичное наследование и проблему двойного наследования когда хотим реализовать в одном классе два поведения. А справа наследование от абстрактного класса и реализация интерфейсов. В этом случае нам конечно придется писать под для каждого интерфейса, зато это провоцирует нас писать классы с одной обязанностью как и ожидает от нас один из пунктов принципа SOLID. А под конец картинка про фабрику

Мой самый сложный SQL запрос

Изображение
Я работу по большей части во фронтэнде на как-то раза два у меня была задача написать сложный SQL-запрос. В принципе получилось довольно быстро при использовании интернет. Может кому и пригодиться. Задача 1 - посчитать количество ордеров определенного типа 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 DROP TABLE IF EXISTS Objects; DROP TABLE IF EXISTS ObjectTypes; DROP TABLE IF EXISTS Attrs; DROP TABLE IF EXISTS Params; CREATE TABLE Objects (id int , objectTypeId int , name varchar ( 30 )); INSERT INTO Objects (id, objectTypeId, name) VALUES ( 1 , 1 , 'Order-Tv#1' ); INSERT INTO Objects (id, objectTypeId, name) VALUES ( 2 , 1 , 'Order-Tv#2' ); INSERT INTO Objects (id, objectTypeId, name) VALUES ( 3 , 1 , 'Order-Tv#3' ); INSERT INTO Objects (id, objectTypeId, name) VALUES ( 4
Периодически забываю как делать сложные enum с поиском по строке (метод valueOfPretty), поэтому вот заготовка. public enum EnumExample { ZERO ( 0 , "zero value" ) , ONE ( 1 , "one value" ) , NULL ( - 1 , "null value" ) { @ Override public String toString ( ) { return super . toString ( ) + "special null value" ; } } ; private int value ; private String description ; EnumExample ( int value , String description ) { this . value = value ; this . description = description ; } public String asPretty ( ) { return this . name ( ) . toLowerCase ( ) ; } public static EnumExample valueOfPretty ( String s ) { for ( EnumExample state : EnumExample . values ( ) ) { if ( state . asPretty ( ) . equals ( s ) ) { return state ; } }